카카오 부트캠프/내용 정리

API Gateway와 Load Balancer

BCSJH 2024. 12. 4. 21:57

오늘은 딥다이브 시간입니다. 😁 이번에 선택한 주제는 API Gateway와 Load Balancer입니다.


1. API Gateway란?

단어 설명
API Application Programming Interface. 컴퓨터나 소프트웨어를 서로 연결하는 것.
Gateway 네트워크 접속 장치.
API Gateway 컴퓨터나 소프트웨어를 서로 연결하는 접속 장치로, 클라이언트와 서버 간의 요청을 중앙에서 관리하고 제어하는 역할을 함.

관련 용어 정리

  • Application: 시스템 프로그램에 기능을 덧붙여 주는 소프트웨어.
  • Programming: 작업을 수행하기 위해 작성된 코드의 집합.
  • Interface: 서로 다른 시스템 간 정보나 신호를 주고받는 접점

2. 왜 API Gateway가 필요한가?

  • 복잡성 해결: 클라이언트가 여러 서비스에 직접 접근하면 관리 비용이 증가.
  • 효율성 향상: 요청 라우팅, 데이터 변환, 인증 등을 중앙에서 관리.

3. API Gateway 활용 경험

세금 계산 작업 사례

  • 미국 주문 건 처리 시, Vertex 솔루션에 직접 연결하여 배송지(state, city, street)에 따라 세금을 조회.
  • 문제:
    • 배송지가 변경될 때마다 요청을 반복적으로 보내야 해서 응답 속도가 느림.
  • 해결:
    • API Gateway(OuterAPIService)를 활용해 요청 처리 작업을 중앙화.
  • 만약 API Gateway가 없었다면?
    • 데이터/요구사항이 변경될 때마다 프론트엔드 서비스를 재배포해야 함.
    • 특히 팀 배포의 경우 프로젝트 빌드와 커밋된 소스 관리가 복잡해 긴급 배포가 번거로움.

4. Load Balancer란?

단어 설명
Load 부하, 작업량.
Balancer 균형을 맞추는 시스템.
Load Balancer 네트워크 트래픽을 여러 서버로 균등하게 분배하여 서버 과부하를 방지하고 성능과 안정성을 유지.

5. API Gateway와 Load Balancer 비교

항목 API Gateway Load Balancer
작동 계층 애플리케이션 계층(OSI 7계층). 네트워크 계층(OSI 4계층) 또는 7계층.
주요 목적 요청 관리, 인증, 데이터 변환, 캐싱. 서버 간 부하 분산 및 장애 대응.
요청 라우팅 백엔드 서비스(마이크로서비스)로 전달. 요청을 여러 서버에 균등 분배.
부하 분산 일부 제공 가능하지만 주 목적 아님. 주요 역할: 트래픽 분산.
인증 및 보안 JWT, OAuth 인증 제공. 인증 직접 제공하지 않음.

6. API Gateway 활용 사례

보안과 안정성

  • 토스와 같은 서비스에서는 종단 간 암호화를 통해 안전하게 요청 데이터를 전송.
  • Gateway에서 요청 데이터를 복호화한 후 인증 및 권한 로직을 처리해 백엔드 서비스에 전달.
  • 결과적으로 서비스는 인증 및 보안 로직에 신경 쓰지 않고 비즈니스 로직에 집중 가능.

유저 정보 처리 (Netflix Passport 구조 참고)

  • 기존에는 각 서비스가 유저 API를 호출해 유저 정보를 가져옴 → 불필요한 중복 요청 발생.
  • 개선: Gateway에서 유저 정보를 통합적으로 관리하여 중복 요청 제거.
  • 유저 정보가 필요한 서비스는 Gateway를 통해 데이터를 효율적으로 조회.

API Gateway와 Load Balancer 통합 활용

구조 로드 벨런서가 앞에 있는 경우 로드 밸런서가 뒤에 있는 경우
트래픽 분산 게이트웨이 간 부하 분산 백엔드 서비스 간 부하 분산
보안 게이트웨이에 의존 게이트웨이가 요청을 필터링해 백엔드 보호
확장성 API 게이트웨이 확장 용이 백엔드 서비스 확장 용이
응답 시간 추가 라우팅으로 약간의 지연 발생 추가 라우팅 단계가 없어 상대적으로 빠름
장애 처리 게이트웨이 장애 시 로드 밸런서가 분산 처리 가능 게이트웨이 장애 시 전체 서비스 중단 위험

8. 왜 로그를 남겨야 하나?

결제 서비스 로그 예시

  • 외부 결제 서비스(네이버페이, 카카오페이 등) 사용 시 결제 오류가 발생하면, 보낸 데이터와 반환값을 확인해야 문제를 해결할 수 있음.
  • 로그를 남기지 않으면 데이터 검증 및 문제 분석이 어려움.
  • 로그를 통해 문제가 발생한 시점을 추적하고, 빠르게 원인을 분석 가능.

결론

API Gateway와 Load Balancer는 서로 다른 역할을 수행하며, 통합적으로 활용하면 시스템의 확장성, 보안성, 안정성을 극대화할 수 있습니다. 특히 API Gateway는 클라이언트와 백엔드 간 데이터 처리의 중심으로, 인증, 데이터 변환, 로깅과 같은 작업을 효과적으로 처리하는 핵심 컴포넌트입니다. 딥다이브 시간을 통해 공부할 수 있어서 좋았습니다. 😊