인프런 아키텍처 2024-2025

김재훈·2024년 8월 28일

2023년 인프런 아키텍처 리뷰

  • 인프런에는 4개의 목적 조직이 존재하는데 전부 국제화에 참여하고, 국제화에 용이하도록 신규 기술 스택 전환
    • 커뮤니티, 강의 & 주문, 인프런 & B2B, 랠릿
  • 글로벌 가기 전에 기반 작업들을 시작하자

트래픽 비용 개선

  • 치솟는 환율로 인해 클라우드 비용이 20% 이상 증가
    • 문제는 글로벌 서비스를 시작하려면, 어떤 의미라도 무료 트래픽을 계속 발생시켜야함
      -> 수익은 발생하지 않더라도, 무료 강의 등의 홍보로 추가 트래픽은 발생하지만 수익x
      -> 국제화 오픈 전에 비효율적인 트래픽 비용을 개선하자는 목표를 세움

이미지 포맷

  • 예시 - 강의목록의 강의 프로필 이미지

  • 단점 - 이미지 포맷에 따라 파일 크기가 너무 차이남
  • png, jpeg의 높은 파일 크기. 50kb * 60개 = 1페이지에 사용자 1명마다 약 3mb 트래픽 발생
    -> seo를 고도화할수록, 구글&페이스북 광고를 할수록 트래픽이 더 높아지는데, 결제하지않으면 이 트래픽 비용을 회수할 수 없음
  • 고품질인데 저용량의 파일 포맷, 긱뉴스에서 안내
  • 적용하고 있는 서비스도 한국에 일부 존재
  • 품질저하가 없는 고효율 압축이 가능, JPEG에 비해 최대 50%까지 용량 개선 가능
  • 이 포맷을 통해 이미지를 내려줘도 브라우저에서 노출하는데 문제x
  • 참조한 포맷 비교 글


  • 람다 엣지의 코드를 수정해서, 쿼리 파라미터 f에 원하는 포맷을 입력하면 람다 엣지에서 파라미터를 보고 내려줌
    -> CF에서는 캐싱된 이미지를 내려주거나, 리사이징&포맷 변경된 이미지를 내려줌

  • 전체적으로 60% 이상의 트래픽 비용 개선 -> 파일 포맷 변경으로 전체 이미지 트래픽의 60% 감소
  • 보통 webp 까지 많이 사용하는데, avif로 혁신적인 이미지 트래픽을 개선함

JSON CDN Cache

  • 모든 페이지에서 이 헤더의 강의 탭을 클릭할 때 노출될 수 있도록 구현
  • 전체 트래픽 그대로 요청수가 발생
  • 트래픽 크기는 하루에 150 GB, 데이터베이스에서 관리(=백엔드에서 카테고리 정보를 내려줌),
    • 한달에 4.5TB


  • 결과적으로 DB부하는 줄었지만, ElastitCache middleware를 3대 이상 운영하는 상황 발생
    -> DB 스펙 한단계 높이는것과 비슷한 비용 발생(비용 개선 실패)

  • CDN 캐시로 해도 되지 않을까? -> 월 4.5TB 트래픽을 EC2로 처리하지 않고 단순 CDN 비용 처리
    -> CFRC같이 CDN의 트래픽 비용에 대해 절약된 계약, EC2의 정말 낮은 서버를 사용할때 만큼의 비용으로 한달에 5, 10TB 비용의 트래픽 처리 가능


  • 잘못 설정하면 첫 로그인하는 유저가 첫 api 호출했을 때, 세션 쿠키가 캐싱된 채로 CDN에서 내려가버리면, 모든 유저들은 이 캐싱된 쿠키를 가지고 제이슨을 가지고 오게 됨 -> 첫번째 로그인한 유저의 세션으로 다 교체되버림

API 환경 개선

  • 서비스 국제화를 위해 Express -> NextJs

앞으로

  • 내년부터 인프런의 일부 기능들이 다국어로 사용 가능

출처 - 인프런 아키텍처 2024~2025 영상

profile
기술을 적용하고 공유하며 논의하는걸 좋아합니다.

0개의 댓글