EP164: JWT 쉽게 설명하기
이번 주 시스템 설계 리프레셔:
- JWT 쉽게 설명하기
- API 설계의 5가지 핵심 원칙
- 컴퓨터 메모리는 어떻게 작동하는가?
- 반드시 알아야 할 Kubernetes Scaling 전략
JWT 쉽게 설명하기
JWT 또는 JSON Web Tokens는 두 당사자 간에 정보를 안전하게 전송하기 위한 개방형 표준입니다. authentication과 authorization에 널리 사용됩니다.

JWT는 세 가지 주요 구성 요소로 이루어져 있습니다:
-
Header 모든 JWT에는 JWT 서명에 사용될 알고리즘을 지정하는 header가 포함됩니다. JSON 형식으로 작성됩니다.
-
Payload payload는 claims와 사용자 데이터로 구성됩니다. registered, public, private claims 등 다양한 유형의 claims가 있습니다.
-
Signature signature는 JWT를 안전하게 만드는 핵심 요소입니다. 인코딩된 header, 인코딩된 payload, secret key, 그리고 알고리즘을 가져와서 서명함으로써 생성됩니다.
JWT는 두 가지 방식으로 서명할 수 있습니다:
-
Symmetric Signatures 토큰 서명과 검증 모두에 단일 secret key를 사용합니다. JWT에 서명하는 서버와 이를 검증하는 시스템 간에 동일한 키가 공유되어야 합니다.
-
Asymmetric Signatures 이 경우 private key를 사용하여 토큰에 서명하고, public key를 사용하여 검증합니다. private key는 서버에서 안전하게 보관되며, public key는 토큰을 검증해야 하는 누구에게나 배포될 수 있습니다.
Over to you: 인증에 JWT를 사용하고 계신가요?
API 설계의 5가지 핵심 원칙

API는 현대 시스템의 근간입니다. 하지만 올바른 방식으로 설계하는 것도 중요합니다.
API를 설계할 때 개발자가 고려해야 할 몇 가지 사항은 다음과 같습니다:
-
Interface API 설계는 API의 입력과 출력을 정의하는 것과 관련됩니다. 예를 들어, CRUD 연산이 사용자나 클라이언트에게 어떻게 노출될지 정의하는 것입니다.
-
API Paradigms API는 각기 고유한 프로토콜과 표준을 가진 다양한 패러다임에 따라 구축될 수 있습니다. REST, GraphQL, gRPC가 대표적인 선택지입니다.
-
Relationships in API API는 종종 다양한 엔티티 간의 관계를 설정해야 합니다. 예를 들어, 사용자 계정에 여러 주문이 연결될 수 있습니다. 더 나은 클라이언트 경험을 위해 API 엔드포인트는 이러한 관계를 반영해야 합니다.
-
Versioning API 엔드포인트를 수정할 때, 적절한 버전 관리와 하위 호환성 지원이 중요합니다.
-
Rate Limiting Rate limiting은 특정 시간 내에 사용자가 API에 보낼 수 있는 요청 수를 제어하는 데 사용됩니다. 이는 API의 안정성과 가용성을 유지하는 데 필수적입니다.
Over to you: API 설계 원칙 중 어떤 것을 목록에 추가하시겠습니까?
컴퓨터 메모리는 어떻게 작동하는가?

다음은 데이터가 입력에서 처리, 저장까지 시스템을 통해 어떻게 이동하는지 보여주는 간단한 분석입니다.
-
데이터는 키보드, 마우스, 카메라 또는 원격 시스템과 같은 입력 소스를 통해 들어옵니다.
-
영구 저장소는 시스템 파일, 앱, 미디어를 보관합니다. 하드 드라이브, USB 드라이브, ROM/BIOS, 네트워크 기반 스토리지가 이에 포함됩니다.
-
RAM은 컴퓨터의 작업 공간입니다. 물리적 메모리와 가상 메모리를 포함하며, 사용 중인 데이터와 프로그램을 임시로 저장합니다.
-
Cache 메모리는 CPU에 더 가깝게 위치하며 Level 1과 Level 2로 나뉩니다. 자주 사용하는 데이터에 대한 접근 속도를 높이는 데 도움이 됩니다.
-
CPU register는 가장 빠르고 가장 작은 메모리 단위입니다. 프로세서가 명령을 거의 즉시 실행할 때 직접 사용됩니다.
메모리 피라미드의 위로 올라갈수록 저장소는 더 빠르고 작아집니다.
Over to you: 컴퓨터 메모리 작동 방식의 이해를 높이기 위해 무엇을 추가하시겠습니까?
반드시 알아야 할 Kubernetes Scaling 전략

-
Horizontal Pod Autoscaling (HPA) Horizontal Pod Autoscaler는 관측된 CPU 사용률, 메모리 사용량 또는 커스텀 메트릭을 기반으로 Deployment, ReplicaSet 또는 StatefulSet의 Pod 수를 자동으로 조정합니다.
-
Vertical Pod Autoscaling (VPA) 애플리케이션 요구 사항에 따라 VPA는 CPU, 메모리 등 개별 pod에 할당된 리소스를 조정합니다. 이 접근 방식은 워크로드 메트릭을 기반으로 pod 리소스 설정을 동적으로 변경합니다.
-
Cluster Auto Scaling Cluster Autoscaler는 Kubernetes 클러스터의 노드 수를 자동으로 조정합니다. 클라우드 provider와 상호 작용하여 요구 사항에 따라 노드를 추가하거나 제거합니다. 이는 균형 잡힌 클러스터를 유지하는 데 중요합니다.
-
Predictive Auto Scaling Predictive Autoscaling은 machine learning을 사용하여 향후 리소스 요구 사항을 예측합니다. 워크로드 수요를 예측하여 Kubernetes가 리소스를 조정하는 데 도움을 줍니다.
Over to you: 목록에 어떤 다른 Kubernetes Scaling 전략을 추가하시겠습니까?
Thank you for reading.