배경행동대장 프로젝트에 무중단 배포를 적용하면서 고민한 내용을 공유한다. 목표우리 팀의 목표는 실제로 서버 다운타임을 0에 가깝게 만드는 것이다. 무중단 배포 방식에는 대표적으로 롤링 배포, 블루-그린 배포, 카나리 배포가 있다. 카나리 배포는 서버가 단 2대인 현재 서비스에 적용하기에 과하다고 생각했다. 롤링 배포와 블루-그린 배포를 중점적으로 고려했다. 현재 인프라 아키텍처는 AZ를 A와 B로 분리한 프라이빗 서브넷에 EC2 한 대씩 두고, 퍼블릿 서브넷에 ALB를 둔 구조이다. ALB에는 EC2 2대에 로드밸런서를 연결한 상태이다. 그림은 다음과 같다. AWS ALB와 EC2 대상 그룹을 이용한 블루-그린 배포이미 ALB를 사용하고 있기 때문에 AWS가 제공하는 EC2 Auto Scaling을..
배경행동대장 서비스에 영수증을 첨부하는 기능이 추가되었다. 정산자가 영수증을 첨부하면 참여자가 확인할 수 있고, 정산의 투명성을 보장할 수 있다. 정산자가 첨부한 영수증 이미지, 서버에서 어떻게 관리되고 있을까? 이 글에서는 행동대장 팀이 영수증 이미지를 어떻게 관리하는지 소개한다. 문제 상황영수증 첨부 기능을 만든 초기에는 사용자가 첨부한 영수증 이미지를 그대로 AWS S3에 저장했다. 이미지 업로드는 S3가 제공하는 pre-signed URL 방식을 사용했다. pre-signed URL은 S3에 이미지를 업로드할 수 있는 인증된 URL을 의미한다. 클라이언트가 서버에 pre-signed URL을 요청하면 서버는 S3에서 pre-signed URL을 발급받아서 클라이언트에 전달한다. 그럼 클라이언트는..
배경행동대장 서비스에 영수증 이미지를 최적화하면서 궁금한 점이 생겼다. 행동대장 서비스에서 사용자는 CloudFront를 통해 S3에 저장된 이미지를 조회한다. 용량이 큰 이미지를 여러 장 조회하면 응답 시간이 얼마나 느릴까? 이미지를 최적화하면서 응답 시간의 차이를 느껴보자. 추측사용자가 크롬 브라우저를 사용한다고 가정하자. 크롬 브라우저가 생성하는 기본 최대 커넥션 수는 6개다. 행동대장 서비스에 업로드할 수 있는 이미지의 최대 사이즈는 5mb이고 한 행사에 첨부되는 영수증은 평균 10개다. 사용자가 행사의 모든 영수증을 조회하면 5mb*10개 = 50mb 이미지를 한 번에 요청한다. 이것이 실제로 어떻게 요청될까? 6개의 커넥션을 사용해서 받아올 거라 예상한다. 유후 상태의 6개의 커넥션을 사용..
들어가기 앞서서..행동대장 팀에서 협업하며 레벨 3과 레벨 4에 걸쳐 한 달간 갈등 상황이 있었습니다. 갈등 속에서 제가 문제를 어떻게 정의하고, 해결하고자 어떤 노력을 했는지 그리고 이 과정에서 배운 점을 정리합니다. 갈등이 발생하기까지레벨 4를 시작하고, 하루가 지나 이틀 차가 되던 날이었다. 아침 데일리 미팅을 하기 위해 모두 자리에 앉았다. 행동대장 팀의 루틴인 눈 운동과 스트레칭을 진행했다. 시간이 지날수록 허례허식 같이 느껴지는 스트레칭이었다. 다음으로 어제 무엇을 했는지, 오늘 무엇을 할 건지 공유하는 시간을 가졌다. 각 분야의 미션의 일정과 미션을 어떻게 진행할지에 대한 이야기만 주고받았다. 프로젝트와 관련된 논의는 전혀 찾아볼 수 없었다. '프로젝트를 하기 위해 모인 팀이 프로젝트 ..