AWS 서비스 아키텍처 재구성: AWS, EC2, S3, RDS, Lambda
사진을 올리고 거래하는 장터 어플의 서버를 물려받게 되었습니다. 처음에는 AWS를 사용하는 EC2 인스턴스 하나에 tomcat, mysql, spring을 이용한 웹과 API 서버가 한데 어울려져 있었습니다. 이 상황에서 AWS 아키텍처를 새롭게 구성해보기로 결정하였습니다.
1단계: S3 도입 - 파일 저장 문제 해결
우선 사진이 상당히 많이 올라가게 되는데 이것을 EC2 인스턴스 볼륨에 저장하고 있었습니다. 이로써 발생한 문제를 해결하기 위해 외부 저장소인 s3를 도입하여 파일을 바로 s3로 저장할 수 있도록 수정하였습니다.
2단계: RDS 도입 - 데이터베이스 안정화
그 다음으로 mysql 서비스와 톰캣이 함께 종료되는 문제가 발생하였습니다. 이 문제를 해결하기 위해 RDS도 도입하여 데이터베이스 관리 부분을 분리하였습니다.
현재 아키텍처 구성: EC2 instance + S3 + RDS
3단계: Lambda와 API Gateway 도입 - API 관리 강화
다음 단계에서는 API서버와 웹서버의 분리가 필요해 보였습니다. 따라서 모든 API는 람다로 옮기고 ec2에는 웹서버만 남겼습니다.
현재 아키텍처 구성 : EC2 instance + S3 + RDS + Lambda(+API gateway)
4단계 : 로드 밸런싱 적용 – auto scale 및 분산 처리 강화
마지막으로 사용자가 늘어난 만큼 auto scale 및 분산 처리의 필요성이 느껴져 로드 벨런싱을 고려하기 시작했습니다. 여기서는 NLB와 ALB 중에서 선택해야 했으며, 이를 위해 다양한 정보를 수집하였습니다.
이 과정에서 매우 유용한 자료를 발견했습니다. 바로 AWS 공식 사이트의 아키텍처 섹션인 https://aws.amazon.com/architecture/ 입니다. 이곳에는 AWS 아키텍처에 대해서 매우 알아보기 쉽고 best case들을 소개하고 있습니다.
결론
지금까지 서비스의 아키텍처를 단계별로 재구성하는 과정을 소개하였습니다. 이제는 위의 예시를 기준으로 서비스를 더 발전시켜 볼 계획입니다.
0 개의 댓글:
Post a Comment