아래 글은 인프콘 2024에서 진행된 인프런 아키텍처 2024 ~ 2025 이라는 발표를 듣고 정리한 글입니다.
인프런의 CTO로 계시는 이동욱님께서 발표하신 인프런의 아키텍처 변화와 발전 방향에 대한 내용입니다.
1. 작년 아키텍처 리뷰와 현재 상황
작년에는 MSA까지는 아니더라도 분산 환경으로의 전환을 목표로 했습니다. 각 목적 조직마다 레거시 시스템을 복제하여 가져가고, 이를 각 조직의 신규 시스템과 함께 점진적으로 개선하는 것이 계획이었습니다.
하지만 현실적으로는 일부 조직은 레거시가 조금씩 개선되었지만, 다른 조직은 레거시가 그대로 남아있고 신규 시스템의 코드가 아직 작은 상태로 유지되는 등 기술 스택 전환이 조직마다 불균형하게 진행되었습니다.
이런 상황에서 인프런은 현재 국제화를 진행하다 보니 많은 서비스 중 학습 서비스의 국제화를 최우선 순위로 삼게 되었습니다.
2. 트래픽 비용 개선
글로벌 서비스를 준비하면서 가장 먼저 해결해야 할 과제는 트래픽 비용 개선이었습니다.
특히 환율 상승(1,400원 이상)으로 인한 클라우드 비용 증가와, 무료 콘텐츠로 인한 트래픽 증가에 대비해야 했습니다.
2.1. 이미지 트래픽 최적화
1. 기존 방식
- CloudFront + Lambda를 사용한 이미지 리사이징
- 쿼리 파라미터로 원하는 크기 지정 (예: w=380)
- CloudFront에서 캐싱하여 제공
2. 개선 방안: AVIF 포맷 도입
- PNG/JPG → AVIF 포맷으로 전환
- 최대 60% 이상의 트래픽 비용 절감 달성
- 예시: PNG(51KB) → WebP(42KB) → AVIF(20KB 이하)
- 대부분의 최신 브라우저에서 AVIF 지원
2.2. JSON 데이터의 CDN 캐싱
1. 기존 문제점
- 카테고리 정보와 같은 JSON 데이터가 매 페이지마다 요청됨
- 하루 150GB, 한 달 4.5TB의 트래픽 발생
- DB 부하가 높음
2. 개선 과정
1단계: 외부 캐시(Redis/ElasticCache) 도입
- DB 부하는 감소했지만 최소 3대 이상의 ElasticCache 서버가 필요
- 비용 효율이 떨어짐
2단계: 로컬 캐시로 전환
- 애플리케이션 서버 내 캐시 매니저 사용으로 DB 부하 감소 유지
- EC2는 여전히 많은 동일 API 조회 처리하여 효율이 떨어짐
3단계: CDN 캐싱 적용
- API 응답을 CloudFront에서 직접 캐싱
- EC2까지 가는 트래픽 대폭 감소
- 70-90% 이상의 트래픽 감소 효과
*CDN 캐싱 주의사항
- API 응답에는 보통 세션 쿠키가 포함되어 있음
- CDN이 이 응답을 캐싱하면, 최초 요청한 사용자의 세션 정보가 함께 캐싱됨
- 다른 사용자들이 캐싱된 응답을 받으면, 의도치 않게 첫 번째 사용자의 세션으로 로그인되는 심각한 보안 문제 발생
- 예시: A 사용자가 요청 → A의 세션이 캐싱 → B 사용자가 요청 → B가 A의 세션을 받게 됨
3. API 환경 개선
- Next.js를 활용한 API 프록시
- 내부/외부 API 분리
4. 인프런의 접근 방식: 펠리컨적 사고
- "일단 시도하자"
- 실패하더라도 앞으로 넘어지자
서버 비용 절감은 많은 개발자들의 고민거리인데, 이번 발표를 통해 트래픽 비용 최적화에 대한 인사이트를 얻을 수 있었습니다.
특히 이미지 포맷 변경이나 JSON 데이터의 CDN 캐싱과 같은 구체적인 해결 방안은 실제 서비스 구축 시 꼭 참고해야 할 내용이라 생각됩니다.
또한 인프런 팀의 펠리컨적 사고 방식인 '일단 시도해보자'는 접근이 정말 인상 깊었습니다.
'알아두면 좋은 개발 지식 > 컨퍼런스 정리' 카테고리의 다른 글
DDD에 대해서 간단하게 정리하기 (0) | 2024.11.08 |
---|---|
[스프링캠프 2024] Spring AI: LLM에도 봄이 찾아오다 (5) | 2024.11.03 |
[인프콘 2024] 지속 성장 가능한 설계를 만들어가는 방법 (6) | 2024.10.19 |
[KCD Korea 2023] CNCF 및 Kubernetes 컨트리뷰션, 지금 여기서 시작하세요! (2) | 2024.10.13 |
[우아콘 2023] Kafka Streams를 활용한 이벤트 스트림 처리 삽질기 (3) | 2024.10.05 |