1. 이메일 엔진 개발
- 회사의 메인 프로젝트를 위해 등록된 계정의 메일을 다운로드하여 저장하는 이메일 엔진을 개발하였습니다.
- Prometheus, Loki, Grafana를 사용하여 K8S 모니터링 환경 구축
메일 다운로드 테스트 중 지속적으로 DB 커넥션 타임아웃이 발생하고, 애플리케이션이 멈추는 현상이 발생하였습니다.
위와 같은 문제가 발생한 원인을 파악하기 위해 K8S에 배포된 애플리케이션의 메트릭을 수집하여 분석할 수 있도록 Prometheus, Loki, Grafana를 사용하여 애플리케이션 모니터링 시스템을 구축하였습니다.
구축한 모니터링 시스템을 사용하여 DB 커넥션 타임아웃의 원인을 DB 커넥션 풀의 커넥션 수 부족으로, 애플리케이션이 멈추는 현상의 원인을 pod에 할당된 메모리 부족으로 판단하고 조치할 수 있었습니다.
- Kubernetes 멀티 리전 클러스터 구축
메일 다운로드 테스트 중 메일 10건을 다운받는데에 5분~10분이 걸리는 현상을 발견하였습니다.
이는 테스트 계정 중 유럽에 메일 서버를 둔 계정의 메일을 다운 받을 때만 발생하는 문제였고, 이에 물리적인 거리에 의한 속도 저하라고 판단하였습니다.
당시 메일 엔진은 한국 리전의 AWS EKS에서 작동하고 있었고, 이 문제를 해결하기 위해서 유럽 리전에 EKS 클러스터를 구축하여 유럽 메일 서버를 사용하는 계정의 메일은 유럽 리전에서 다운 받을 수 있도록 구축하기로 결정하였습니다. 하지만 이는 어디까지나 테스트 환경이었고, 테스트 종료 후 리소스 정리 및 추후 필요 시 재구축이 필요하였기에 리소스 정리와 배포를 반복적으로 쉽게 할 수 있도록 Terraform(IaC)을 사용하여 배포하였습니다.
유럽 리전에 애플리케이션 배포 후 5~10분이 걸리던 다운로드 작업이 10~15초로 단축되는 것을 확인할 수 있었습니다.
- Container → Serverless 마이그레이션
메일 엔진에 등록된 메일 계정의 수와 메일 계정을 사용하는 국가 등에 따라 부하가 걸리는 양과 시간이 달라져 많은 리소스가 필요한 시점을 파악하기가 힘들고, 가장 심한 부하가 걸릴 때에 리소스를 맞춰 운영할 경우 서버 비용이 증가하는 문제가 발생할 수 있음을 파악하였습니다.
AWS EKS를 사용하고 있었으므로 AWS의 fargate profile + K8S의 HPA를 사용하여 해결하는 방법을 고려해 볼 수 있었고, 다른 선택지로는 기존 Container 환경에서 확장이 비교적 간단한 serverless 환경으로의 이동이 있었습니다.
지속적인 애플리케이션 운영 비용을 따져 보았을 때 HPA보다 Serverless환경으로 전환하는 것이 비용을 절감할 수 있는 방법이라 판단하여 기존 container 환경에서 실행중이던 애플리케이션을 serverless 애플리케이션으로 마이그레이션 하였습니다.
2. 이메일 클라이언트 개발
- 이메일 엔진에서 다운로드 받은 메일 데이터를 사용자가 확인하고, 메일을 전송할 수 있는 이메일 클라이언트 서버를 단독 개발 중입니다.
3. 통관 솔루션 개발
- 통관 업무의 자동화를 위한 자체 솔루션의 서버를 개발 중입니다.
- 통관 업무와 관련된 서류를 인식하는 모듈을 AWS Textract를 이용하여 개발 중입니다.
더보기