Back
ESSAY번역
DEC 16, 2025

EP172: API 성능을 개선하는 5가지 일반적인 방법

원문: EP172: Top 5 common ways to improve API performance


이번 주 시스템 설계 복습:

  • 알아야 할 20가지 시스템 설계 개념 - 마지막 파트 (Youtube 영상)

  • API 성능을 개선하는 가장 일반적인 5가지 방법

  • REST API vs. GraphQL

  • ByteByteGo Technical Interview Prep Kit

  • Token vs API Key

  • AWS 기술 스택

  • DB 쿼리를 엄청 빠르게 만드는 5가지 자료구조

  • SPONSOR US


알아야 할 20가지 시스템 설계 개념 - 마지막 파트

YouTube 영상


API 성능을 개선하는 가장 일반적인 5가지 방법

API Performance

  • Result Pagination: 대용량 결과 세트를 클라이언트에 스트리밍 방식으로 전달하여 최적화하는 방법입니다. 서비스 응답성과 사용자 경험을 향상시킵니다.

  • Asynchronous Logging: 매번 디스크에 직접 쓰지 않고, 로그를 lock-free buffer에 보내고 즉시 반환하는 방식입니다. 로그는 주기적으로 디스크에 flush되어 I/O 오버헤드를 크게 줄입니다.

  • Data Caching: 자주 접근하는 데이터를 캐시에 저장하여 검색 속도를 높입니다. 클라이언트는 데이터베이스를 쿼리하기 전에 먼저 캐시를 확인하며, Redis와 같은 데이터 저장 솔루션은 인메모리 저장 방식으로 더 빠른 접근을 제공합니다.

  • Payload Compression: 데이터 전송 시간을 줄이기 위해 요청과 응답을 압축합니다(예: gzip). 업로드와 다운로드 프로세스가 더 빨라집니다.

  • Connection Pooling: 데이터베이스 상호작용을 관리하기 위해 열린 연결 풀을 사용하는 기법입니다. 데이터를 로드할 때마다 연결을 열고 닫는 오버헤드를 줄여줍니다. 풀이 연결의 라이프사이클을 관리하여 리소스를 효율적으로 사용합니다.

Over to you: API 성능을 개선하기 위해 어떤 다른 방법을 사용하시나요?


REST API vs. GraphQL

API 설계에 있어서 REST와 GraphQL은 각각 고유한 장단점을 가지고 있습니다.

REST vs GraphQL

REST

  • CRUD 연산을 위해 GET, POST, PUT, DELETE 같은 표준 HTTP 메서드를 사용합니다.

  • 별도의 서비스/애플리케이션 간에 간단하고 일관된 인터페이스가 필요할 때 잘 작동합니다.

  • 캐싱 전략을 구현하기가 간단합니다.

  • 단점은 별도의 엔드포인트에서 관련 데이터를 조합하기 위해 여러 번의 왕복이 필요할 수 있다는 것입니다.

GraphQL

  • 클라이언트가 정확히 필요한 데이터만 쿼리할 수 있는 단일 엔드포인트를 제공합니다.

  • 클라이언트가 중첩 쿼리에서 필요한 정확한 필드를 지정하면, 서버는 해당 필드만 포함하는 최적화된 페이로드를 반환합니다.

  • 데이터 수정을 위한 Mutation과 실시간 알림을 위한 Subscription을 지원합니다.

  • 여러 소스의 데이터를 집계하는 데 유용하고, 빠르게 변화하는 프론트엔드 요구사항에 잘 맞습니다.

  • 단, 복잡성이 클라이언트 측으로 이동하고, 적절한 보호 장치가 없으면 남용 쿼리가 발생할 수 있습니다.

  • 캐싱 전략이 REST보다 더 복잡할 수 있습니다.

REST와 GraphQL 사이의 최선의 선택은 애플리케이션과 개발팀의 구체적인 요구사항에 따라 달라집니다. GraphQL은 복잡하거나 자주 변경되는 프론트엔드 요구사항에 적합하고, REST는 간단하고 일관된 계약이 선호되는 애플리케이션에 적합합니다.


ByteByteGo Technical Interview Prep Kit

모든 책을 ByteByteGo 웹사이트에서 이용할 수 있는 올인원 인터뷰 준비 키트를 출시합니다.

ByteByteGo Kit

포함 내용:

  • System Design Interview

  • Coding Interview Patterns

  • Object-Oriented Design Interview

  • How to Write a Good Resume

  • Behavioral Interview (출시 예정)

  • Machine Learning System Design Interview

  • Generative AI System Design Interview

  • Mobile System Design Interview

  • 그리고 더 많은 콘텐츠 추가 예정

런칭 세일: 50% 할인


Token vs API Key

Token(JWT 같은)과 API Key 모두 인증(authentication)과 인가(authorization)에 사용되지만, 서로 다른 목적을 가집니다. 두 가지의 간소화된 플로우를 이해해 봅시다.

Tokens vs API Keys

Token 플로우

  1. 최종 사용자가 프론트엔드 웹 애플리케이션에 로그인합니다.

  2. 로그인 자격 증명이 Identity Service로 전송됩니다.

  3. 인증 성공 시 JWT 토큰이 발급되어 반환됩니다.

  4. 프론트엔드가 Authorization 헤더에 JWT를 포함하여 API를 호출합니다.

  5. API Gateway가 요청을 가로채고 JWT를 검증합니다(signature, expiry, claims).

  6. 유효하면 gateway가 검증 응답을 보냅니다.

  7. 검증된 요청이 사용자 인증 서비스로 전달됩니다.

  8. 서비스가 요청을 처리하고 데이터베이스와 상호작용하여 결과를 반환합니다.

API Key 플로우

  1. 서드파티 개발자가 Developer Portal에 등록합니다.

  2. 포털이 API Key를 발급합니다.

  3. 키는 나중에 검증할 수 있도록 secure key store에도 저장됩니다.

  4. 개발자 앱이 향후 API 요청 시 헤더에 API Key를 포함하여 전송합니다.

  5. API Gateway가 요청을 가로채고 키를 API Key Validation 서비스로 보냅니다.

  6. 검증 서비스가 key store에서 키를 확인하고 응답합니다.

  7. 유효한 API Key의 경우, gateway가 요청을 public API 서비스로 전달합니다.

  8. 서비스가 요청을 처리하고 필요에 따라 데이터베이스에 접근합니다.

Over to you: 이 설명에 무엇을 더 추가하시겠습니까?


AWS 기술 스택

AWS Tech Stack

  1. Frontend: 정적 웹사이트는 S3에 호스팅되고 CloudFront를 통해 전 세계적으로 낮은 latency로 제공됩니다. 프론트엔드 개발을 지원하는 다른 서비스로는 Amplify, Cognito, Device Farm이 있습니다.

  2. API Layer: API Gateway와 AppSync가 내장된 보안 및 throttling과 함께 REST 및 GraphQL API를 노출합니다. 이 영역에서 작동하는 다른 서비스로는 Lambda, ELB, CloudFront가 있습니다.

  3. Application Layer: 이 레이어는 비즈니스 로직을 호스팅합니다. 이 레이어에서 중요한 서비스로는 Fargate, EKS, Lambda, EventBridge, Step Functions, SNS, SQS가 있습니다.

  4. Media and File Handling: 미디어는 S3에 업로드되고 Elastic Transcoder를 통해 트랜스코딩되며, moderation을 위해 Rekognition으로 분석됩니다. CloudFront signed URL은 인증된 사용자에게 비디오와 파일의 안전한 전달을 보장합니다.

  5. Data Layer: 이 레이어의 주요 서비스는 Aurora, DynamoDB, ElastiCache, Neptune, OpenSearch입니다.

  6. Security and Identity: 이 스택 레이어에 도움이 되는 AWS 서비스로는 IAM, Cognito, WAF, KMS, Secrets Manager, CloudTrail이 있습니다.

  7. Observability and Monitoring: CloudWatch는 로그, 메트릭, 알람을 모니터링합니다. X-Ray는 요청 경로의 tracing을 제공합니다. CloudTrail은 API 호출을 캡처합니다. Config는 compliance를 보장하고 GuardDuty는 보안 위협을 탐지합니다.

  8. CI/CD and DevOps: 이 레이어에서 사용되는 주요 서비스는 CodeCommit, CodeBuild, CodeDeploy, CodePipeline, CloudFormation, ECR, SSM입니다.

  9. Multi-Region Networking: Route 53과 Global Accelerator가 빠른 DNS와 글로벌 라우팅을 보장합니다. VPC는 네트워크를 세분화하고 NAT와 Transit Gateway는 안전한 트래픽 흐름을 처리합니다. AWS Backup은 여러 리전에 걸친 재해 복구를 제공합니다.

Over to you: 이 목록에 어떤 다른 서비스를 추가하시겠습니까?


DB 쿼리를 엄청 빠르게 만드는 5가지 자료구조

자료구조는 데이터베이스 인덱스에 있어 매우 중요합니다. 왜냐하면 자료구조가 데이터를 얼마나 효율적으로 검색, 삽입, 조회할 수 있는지를 결정하여 쿼리 성능에 직접적인 영향을 미치기 때문입니다.

DB Data Structures

  1. B-Tree Index: B-Tree 인덱스는 키와 데이터 포인터가 내부 노드와 리프 노드에 존재하는 균형 트리 구조를 사용합니다. 정렬된 순회를 통해 범위 쿼리와 포인트 쿼리를 효율적으로 지원합니다.

  2. B+ Tree Index: B+ Tree 인덱스는 모든 데이터 포인터를 리프 노드에 저장하고, 내부 노드는 검색을 안내하는 키만 보유합니다. 리프 노드가 연결되어 있어 순차 접근을 통한 빠른 범위 쿼리가 가능합니다.

  3. Hash Index: Hash 인덱스는 검색 키에 해시 함수를 적용하여 데이터 행에 대한 포인터가 있는 bucket을 직접 찾습니다. 동등성 검색에 최적화되어 있지만 범위 쿼리에는 적합하지 않습니다.

  4. Bitmap Index: Bitmap 인덱스는 각 가능한 값에 대해 비트 배열을 사용하여 컬럼 값을 표현하며, bitwise 연산을 통한 빠른 필터링을 가능하게 합니다. 낮은 cardinality의 범주형 데이터에 이상적입니다.

  5. Inverted Index: Inverted 인덱스는 각 고유 용어를 해당 용어를 포함하는 행 ID 목록에 매핑하여 빠른 전문 검색을 가능하게 합니다.

Over to you: 이 목록에 어떤 다른 자료구조를 추가하시겠습니까?

Thank you for reading.

Based in Seoul
Since 2024