리팩톤 과제
미션
ASAP 업무 요청 공유드립니다.
흑백요리사로 유명한 A 셰프의 레스토랑이 이번 주 금요일에 오픈합니다. 중요한 점은, 이 레스토랑의 예약 시스템을 우리 서비스 단독으로 사용한다는 점입니다. 이사님과 급히 논의된 결과, 금요일 전까지 개발 작업을 완료해야 한다는 결론이 나왔습니다. 이 레스토랑은 당일 예약만 받는 구조라 대기자가 상당히 몰릴 것으로 예상됩니다. 특히, 오픈 전과 후의 폭발적인 트래픽에도 시스템이 안정적으로 동작해야 합니다.
지난 회의에서 논의했던 레스토랑 스케줄(예약 현황판) 관련 개선사항을 반영하여, 해당 부분이 트래픽을 잘 처리할 수 있도록 리팩토링이 필요합니다. 내용을 확인해주시고, 필요한 리소스나 논의 사항이 있다면 공유해주세요!
분석
- 3일 동안 진행
- 분산락이나 락관련 이슈를 해결
- 다양하게 레디스가 적용되어 있기 때문에, 더 안정적으로 유지될 수 있는 방법
인원
다른 팀원들인 일정이 촉박해 동시성 문제가 발생하는 레스토랑과 웨이팅 도메인 담당자 분이 해주기로 해셨다.
인프라
카프카, 모니터링, 레디스 배포 결정
Kafka, 모니터링, Redis를 EC2에 통합 배포하려 했으나 재검토하기로 했다. 각 서비스의 CPU, 메모리 최소 권장 사양이 상당히 높았기 때문인데, 리소스 부족 및 성능 저하를 방지하기 위해 분리 배포를 결정했다. Kafka와 Redis 등 주요 서비스를 각각 적합한 사양의 인스턴스에 배치하기로 팀장님이 결정하셨다.
설정 서버
민감한 정보 관리 고민
Config Server에서 민감한 정보를 관리하기 위해 Git 프라이빗 레포지토리에서 값을 불러오는 방식을 사용하기로 했다. 그러나 Git에서 데이터를 불러오는 데 필요한 키(Deploy Key 또는 Token)를 Config Server에 저장해야 하는 점이 보안상 고민거리이다. 민감한 키 관리 방안을 검토 중이고 키를 안전하게 저장하고 접근을 최소화할 방법이 필요하다. Secrets 관리 기능이나 더 방법을 찾아봐야 되는 상황이다.
Private Repository 접근 방법
- Deploy Key는 특정 레포지토리에서 읽기/쓰기 권한으로 사용한다. 꼭 용도별로 분리하는 것을 권장한다.
- Personal Access Token은 CI/CD에서 환경변수(Secrets)로 관리하며, 이것도 용도별로 발급받는다.
- CI/CD 환경변수로 안전하게 불러와 사용하며, 노출을 최소화한다.
- Secrets 관리 기능을 활용해 보안 유지을 유지한다.