이 글은 JWT에 대한 개념을 다루지 않습니다. JWT의 개념을 숙지한 다음 해당 글을 읽으시면 더 많은 도움을 받을 수 있습니다. JWT 암호화 알고리즘, 왜 중요할까?JWT는 인증/인가 시스템에서 널리 사용되는 토큰 포맷이다.이러한 JWT를 발급하고 인증하는 과정에서, 암호화 알고리즘을 선정하는 것은 아래 요소들에 큰 영향을 미친다.보안성: 키 유출 시 얼마나 위험한가? 얼마나 오래 안전한가?성능: 토큰의 발급 및 검증 속도는 얼마나 되는가?확장성: 다수의 서비스가 검증에 참여할 수 있는가? 새로운 서비스가 검증을 수행하고자 할 때의 난이도는 어떠한가?운영 난이도: 구현이 쉬운가? 디버깅 및 문제 추적이 쉬운가? 키 관리와 배포가 얼마나 쉬운가?그리하여 이번 글에서는 JWT를 다룰 때 주로 사용되는 ..
개요 - 쿠버네티스 리소스를 직접 다룰 때의 불편함운영 중인 쿠버네티스 클러스터 안에는 수많은 리소스가 존재한다. Pod와 이를 관리하는 Deployment, 클러스터 내/외부와의 통신을 위한 Service, 변수 관리를 위한 Configmap 등이 이에 해당한다.이러한 쿠버네티스 리소스들은 보통 리소스별로 별도의 yaml 파일에 명시하고 관리하게 되며, 아래와 같은 명령어를 통해 클러스터에 배포한다.kubectl apply -f {resource name}언뜻 보면 그렇게 복잡한 작업이 아니어보일 수 있지만, 매번 동일한 클러스터를 구성하기 위해 수십 개의 리소스에 대해 이 명령을 실행하는 것은 꽤나 귀찮은 일이 될 수 있다.또한, 리소스의 변경 주기가 개별적으로 동작하니 변경 관리를 하기 어렵다. 언..
개요 - 민감 정보를 클러스터에 저장하려면?애플리케이션을 운영하다 보면 데이터베이스 접속 정보, API 키, 인증서 등과 같은 민감 정보를 안전하게 관리해야 한다. Kubernetes에서는 ConfigMap, Secret과 같은 환경변수 관리 목적의 리소스를 제공하지만, 이러한 방법들을 통해 민감 정보를 다루는 것은 보안적인 측면에서 명백히 한계를 갖고 있다.본 글에서는 아래와 같이 민감 정보가 전달되는 과정에서 어떻게 민감 정보를 다루는 것이 더 좋을지 각 단계별 데이터의 형태를 기준으로 살펴보고자 한다.Local Machine - 개발자가 작업하는 로컬 머신External Storage - 작업물이 올라가는 저장소. GitHub과 같은 서비스Kubernetes Cluster - 애플리케이션(Pod)이..
요구사항 - 크레딧 서버 개발어느 날, 물건 판매 개발이 포함된 서비스의 개발자인 나에게 사용자의 크레딧을 관리할 수 있는 크레딧 서버의 개발 및 요청이 들어왔다.이 크레딧은 매일 자정에 30으로 초기화되며, 사용자들은 매일 이 30개의 크레딧을 통해 물건을 구매할 수 있다. 구현 편의성을 위해 이 서버는 물건 당 크레딧, 사용자 세부 정보 등의 정보는 다루지는 않는다고 가정한다.그리하여 이 크레딧 서버가 제공해야 하는 API는 2개이다.크레딧 차감사용자 아이디, 크레딧 사용량을 입력으로 받아 해당 사용자의 크레딧을 차감크레딧 조회사용자 아이디를 입력으로 받아 해당 사용자의 당일 잔여 크레딧을 반환지금부터 2가지 방식의 설계 하에 2가지 기능을 구현하고, 2개 설계의 성능을 비교해보고자 한다. 설계버전..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.