천만 사용자를 위한 AWS 클라우드 아키텍처 진화하기 영상을 보고 정리한 포스팅입니다! 포스팅에 첨부된 모든 이미지는 Amazon Web Service Korea에서 업로드한 위 영상 내에 나오는 이미지임을 알립니다~! 천만 사용자를 위한 아키텍처 1,000만명이 사용해도 서비스할 수 있도록 팀의 인프라 아키텍처 개선 방향을 고민한다 (구현 X) 팀 프로젝트 요구사항으로 제시된 문구입니다. 구현은 하지 않아도 되지만, 천만 사용자를 감당할 수 있는 아키텍처에 대해 고민해보라는 것이죠. 최근 카카오의 장애 사례를 겪으면 SPOF를 없애는 것의 중요성을 크게 깨달은 바 있는데요, 천만 사용자를 감당하려면 물리적으로 뛰어난 성능도 중요하지만 SPOF를 없애고, 재난 복구(DR)를 구축하는 것도 중요할 것 같습..
확장 가능한 알림 시스템의 설계는 오랜 시간 저의 지적 호기심을 자극해왔던 주제입니다. WAS를 스케일 아웃 할 경우에, 개별 WAS가 DB에 저장되어 있는 알림 정보를 특정 시간마다 조회해와서 알림을 발송할 경우, 중복 알림 발송이 발생할 수 있기에 수평확장 가능하지 않다고 판단했고, 이에 따라 하나의 큐처럼 동작하는 별도의 알림 서버를 구성해서 그곳으로 알림 요청을 보내야한다고 판단했습니다. 그러나 이 경우, 하나의 큐에서 알림들을 받아 처리하기 때문에, 이 역시 확장가능하지 않다고 생각했었는데요, 쿠팡 Reveal2021과 가상 면접 사례로 배우는 대규모 시스템 설계 기초의 내용을 접한 뒤, 이렇게 구성하면 되겠구나 하는 생각이 들어 도식표를 그려봤습니다. 하나의 알림 큐에 모든 알림 요청을 담고,..
Reveal2021 - 쿠팡의 대규모 트래픽을 다루는 백앤드 전략 영상을 보고 정리해본 포스팅입니다. 최근 이 영상에서 다룬 문제에 대해 고민하고 있었는데, 너무 멋진 대응 예시를 보게 되어 기쁩니다! 이 영상의 해결방법을 지금 진행중인 프로젝트에 바로 적용하기엔 어렵지만 이러한 접근이 가능하다는 것을 들을 수 있어서 감사했습니다. 많은 데이터를 요구하는 화면 위 예시 이미지에서 보여지는 화면에 필요한 데이터를 구현한다면 어떻게 해야 할까요? 카탈로그, 가격, 혜택가격, 재고 수량, 리뷰 수와 평점, 적립액을 응답해줘야할 겁니다. 그 중에 리뷰와 평점만 살펴본다면 어떨까요? 예시 이미지상 카운트가 4300인데요, 상품 아이디로 리뷰들을 카운팅하고, 갯수로 총점을 나눠서 평점을 구할 수 있겠네요. 카운팅과..
서버의 성능을 최적화하기 위해선 어떤 작업이 필요할까요? 어떤 지표를 기준으로 성능을 측정할 것인지, 정의된 지표에 영향을 미치는 변수에는 무엇이 있는지, 해당 변수들의 변화가 성능에 미치는 영향은 어느 정도인지 등 많은 작업이 필요할 것입니다. 그 중에서도 반복해서 요청을 발생시킴으로써 지표를 측정할 수 있게 해주는 테스트 도구는 필수 불가결합니다. 이번 포스팅에선 Apache JMeter를 이용해 부하를 발생시키고, 그 결과를 리포트로 생성해보겠습니다. 부하 테스트를 위한 도구들 어떤 부하 테스트 도구를 사용할까요? 주변에서 가장 많이 접했던 k6, nGrinder, JMeter 세 가지를 고민했습니다. 처음엔 성능 측정을 위해 어떤 지표가 필요하고, 각 도구가 어떤 지표를 제공하는지 등을 고려했는데..
전체 코드는 여기에서 확인하실 수 있습니다 :) 두 곳에 Ajax 요청을 보낸 뒤, 결과를 취합해 후속 작업을 해야 한다면? 언제 처리가 완료될지 정확히 알 수 없는 두 가지 작업이 있고, 그 작업들이 모두 완료된 이후에 취합하여 후속작업을 처리해야 한다고 가정해보겠습니다. 가령 서비스 레이어에서 두 곳의 엔드포인트에 요청을 보내고, 응답 값을 취합해서 결과에 따른 분기처리가 필요한 상황이라고 생각해볼 수 있을 것 같아요. 요청한 클라이언트에게 즉시 결과를 응답해야 한다면 두 요청을 쓰레드 풀 작업 큐에 넣고, 두 Future 객체의 get() 메서드를 이용해 기다린 후 응답한다 이 방법의 장점은 하나의 요청이 응답될 때까지 기다렸다가 다음 요청이 나가는 것이 아니라, 동시에 두 가지 요청이 호출된다는 ..