그리디의 첫인상그리디는 세종대학교 교내 개발 동아리다. 평범한 동아리가 아닌, 아주 특이한 동아리다! 그리디를 함께하는 사람은 3가지 역할군으로 분류할 수 있다. 그리디를 유지보수하는 메인테이너, 그리디에서 성장해 나가는 멤버, 그리고 멤버의 성장을 돕는 리뷰어까지 모 부트캠프와 비슷한 형태이다. 비슷할 수밖에! 메인테이너와 리뷰어가 대부분 우아한테크코스 수료생이기 때문이다. 지난 11월 6일 그리디 디스코드 채널에 처음 들어갔다. 메인테이너인 코코닥이 도와달라고 요청했고 기꺼이 참여했다. 처음 그리디 공식 행사에 참여한 것은 그리디 전체 회의였다. 멤버들을 처음 만나는 자리였다. 회의 후에는 전체 회식을 갔는데 회식 분위기가 정말 훈훈했다. 동아리가 참 마음에 들었고, 이런 분위기라면 꿈꾸던 동아..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
그동안의 이야기2022년 11월, ICPC 본선 무대를 마지막으로 저의 PS(Problem Solving) 여정 1부가 막을 내렸어요. 여러 이유로 인해 PS를 그만두고, 개발 공부에 집중하기로 했어요. 그동안 알고리즘 문제를 아예 풀지 않았던 것은 아니지만, 특별한 목표 없이 주로 쉬운 난이도의 문제들만 풀며 시간을 보냈어요. 왜 재활하려 하는가이것도 여러 이유가 있지만, 가장 큰 이유는 사고력을 회복하고 싶어요. PS를 정확히 2년 동안 쉬었더니, 자연스럽게 문제 해결 능력과 깊이 사고하는 역량이 많이 줄어든 게 느껴져요. 단순히 PS 실력이 줄어드는 것 자체는 큰 문제가 아니었어요. 그러나 올해 우아한테크코스에서 큰 스트레스를 받으면서, 제 머리에 심한 부하가 생겼어요. 머리에 부하가 심해질수록 ..
보호되어 있는 글입니다.
배경행동대장 프로젝트에 무중단 배포를 적용하면서 고민한 내용을 공유한다. 목표우리 팀의 목표는 실제로 서버 다운타임을 0에 가깝게 만드는 것이다. 무중단 배포 방식에는 대표적으로 롤링 배포, 블루-그린 배포, 카나리 배포가 있다. 카나리 배포는 서버가 단 2대인 현재 서비스에 적용하기에 과하다고 생각했다. 롤링 배포와 블루-그린 배포를 중점적으로 고려했다. 현재 인프라 아키텍처는 AZ를 A와 B로 분리한 프라이빗 서브넷에 EC2 한 대씩 두고, 퍼블릿 서브넷에 ALB를 둔 구조이다. ALB에는 EC2 2대에 로드밸런서를 연결한 상태이다. 그림은 다음과 같다. AWS ALB와 EC2 대상 그룹을 이용한 블루-그린 배포이미 ALB를 사용하고 있기 때문에 AWS가 제공하는 EC2 Auto Scaling을..
배경행동대장 프로젝트에 무중단 배포를 도입하기에 앞서서 현재 배포 방식을 돌아봤다. 우리 팀은 도커를 사용해서 SpringBoot 애플리케이션을 띄우고 있다. 배포가 필요할 때는 컨테이너를 강제로 삭제하고 새로운 도커 이미지에서 새로운 컨테이너를 생성한다. 이 방식에는 문제가 있다. 도커 컨테이너를 강제로 삭제하면 컨테이너 내부의 모든 프로세스가 강제로 종료된다. 처리 중인 사용자의 요청도 강제로 종료되고, 사용자는 텅 빈 응답을 받게 된다. 그렇다면 도커 컨테이너를 어떻게 종료해야 SpringBoot 애플리케이션이 사용자의 요청을 모두 처리하고 종료될까? 별도의 애플리케이션을 만들어서 테스트해 보았다. 좌측은 테스트용 API, 우측은 도커 파일이다. API는 테스트를 위해 스레드를 20초 동안 잡고 있..
배경행동대장 서비스에 영수증을 첨부하는 기능이 추가되었다. 정산자가 영수증을 첨부하면 참여자가 확인할 수 있고, 정산의 투명성을 보장할 수 있다. 정산자가 첨부한 영수증 이미지, 서버에서 어떻게 관리되고 있을까? 이 글에서는 행동대장 팀이 영수증 이미지를 어떻게 관리하는지 소개한다. 문제 상황영수증 첨부 기능을 만든 초기에는 사용자가 첨부한 영수증 이미지를 그대로 AWS S3에 저장했다. 이미지 업로드는 S3가 제공하는 pre-signed URL 방식을 사용했다. pre-signed URL은 S3에 이미지를 업로드할 수 있는 인증된 URL을 의미한다. 클라이언트가 서버에 pre-signed URL을 요청하면 서버는 S3에서 pre-signed URL을 발급받아서 클라이언트에 전달한다. 그럼 클라이언트는..