본문 바로가기

분류 전체보기

(15)
[Authorization] JWT 토큰 이해하기 서버 기반 인증 시스템 기존의 인증 시스템은 서버 기반으로 서버 측에서 유저의 정보를 기억하고, 세션을 유지하기 위해서 메모리 / 디스크 / 데이터베이스 등이 사용된다. 문제점 세션 서버가 유저의 인증 기록을 남기는 것을 세션이라고 부른다. 로그인하는 유저의 수가 늘어나면 메모리 또는 데이터베이스의 성능에 무리를 줄 수 있다. 확장성 서버를 확장하는 것이 어려워진다. 세션을 서버에 저장하면서 서버를 확장하는 것은 과정이 매우 복잡하다. 토큰 기반 인증 시스템 토큰 기반 인증 시스템은 Stateless 하다고 한다. 유저의 인증 정보를 서버에 담아두지 않기 때문이다. 장점 Stateless & Scalability 상태가 없기 때문에 서버를 여러대로 확장할 수 있다. 특히 Kubernetes 상에 pod로..
[Jenkins] Kubernetes에 Jenkins 분산 빌드 환경 설정 (Master-Slave) Jenkins는 대표적인 CI(Continuous Intergration) 툴로, 많은 플러그인을 제공하며 확장성이 크다는 장점이 있다. Jenkins를 Kubernetes에 구축하고, 분산 빌드 환경을 설정하려고 한다. Jenkins 단일 서버 - 크고 무거운 프로젝트가 점점 더 많이 빌드된다면, 단일 서버로 버틸 수 없음 - 빌드 환경을 다르게 설정하고 싶을 때에도 단일 서버에서는 불가능함 Jenkins 분산 아키텍처 Jenkins는 Mater-Slave 아키텍처를 통해 분산 빌드 환경을 관리할 수 있다. (요즘은 slave 대신 agent라고 부르는 듯) - Master 빌드 작업을 스케줄링하고 Slave에서 실행 및 모니터링 (물론, 빌드 작업 실행도 가능) / Jenkins 서버 (GUI, AP..
[Terraform] 테라폼으로 모듈 구성하기 - count, for-each 등 Terraform? IaC 도구로, AWS의 서비스를 코드로서 관리할 수 있게 해주는 플랫폼이다. 특히 AWS의 여러 서비스가 유기적으로 관련되어 있고, 콘솔로 반복적인 작업을 해야할 때 Terraform을 사용한다. Terraform 모듈을 생성하면서 깨달은 것 - 테라폼에는 생각보다 다양한 문법이 있다. 잘 사용하면, 복잡한 구성도 테라폼으로 설계가 가능하다. - 모듈을 만들 때는 고려해야 할 부분이 꽤있지만, 잘 만들어놓으면 편하다. Terraform Module Terraform 모듈 내에 원하는 리소스들을 구성해놓으면, 여러 다른 위치에서 다른 변수값을 사용해서 리소스를 생성할 수 있다. 모듈은 다음과 같이 사용할 수 있다. 리소스를 구성해놓은 모듈 코드가 있는 PATH를 설정하고, Module..
[AWS] 대용량 스트림 데이터 처리 플랫폼 - Kinesis AWS Kinesis Kinesis를 통해 대용량 스트리밍 데이터를 수집하고, 처리 및 분석까지 가능하다. - 스트리밍 데이터란? 데이터 레코드를 동시에 작은 크기(킬로바이트 단위)로 전송하는 수천개의 데이터에 의해 지속적으로 생성되는 데이터 - 스트림 처리 vs 일괄 처리 스트림 처리의 이점이나 용도를 이해하기 위해서는 일괄 처리와 스트리밍 처리를 비교해서 파악하면 된다. 일괄 처리는 보통 모든 데이터에서 파생된 결과의 처리 및 분석을 가능하게 하므로 대량의 데이터를 처리한다. 반면에 스트림 처리는 수집하는 각 데이터 레코드에 대한 처리로 실시간 모니터링 및 응답 기능에 더욱 적합하다. 많은 조직이 두 가지 접근 방식을 결합하여 하이브리드 모델을 구축하고 실시간 계층과 배치 계층을 유지하게 된다. Am..
[Kubernetes] 쿠버네티스 API 확장하기 - custom resource, crd Helm chart를 설치할 때 다음과 같은 에러가 나올 때가 있다. ( 아래는 argocd를 재설치하다가 발생한 에러 ) Error: release argo failed: customresourcedefinitions.apiextensions.k8s.io "workflows.argoproj.io" already exists customresourcedefinitions가 이미 있어서 설치가 안된다는 내용이다. 해결 방법에는 두 가지가 있다. 1. customresourcedefinition를 삭제하고, helm chart를 설치 $ kubectl delete crd crd_name 2. 이미 존재하는 customresourcedefinition의 재설치를 건너뛰고 helm chart를 설치 → --no..
[Kubernetes] 쿠버네티스 플러그인 추천 (kubectx, kubens, ...) kubectl 명령어로 쿠버네티스 클러스터 context나 namespace를 변경하는 것은 번거롭다. (명령어가 길다) Kubectx, Kubens kubectx, kubens를 활용하면 쉽게 클러스터의 context나 namespace를 변경할 수 있다. ahmetb/kubectx Faster way to switch between clusters and namespaces in kubectl - ahmetb/kubectx github.com 설치 방법은 간단하다. kubectx를 설치하면 kubens도 설치된다. ( mac os 기준 ) $ brew install kubectx 다음과 같이 kubectx, kubens를 cli에 치고 원하는 context와 namespace를 선택하면 된다. ( 엄..
[AWS] 운영 서버 관리 - 코드 배포 앞의 포스팅에서 운영 서버 관리 중 환경을 구성하는 것을 다뤘고, 환경을 구성한 후에는 코드를 배포해야 한다. 배포와 관련된 여러 용어들을 정리해보자 👍 무중단/중단 배포 무중단 배포: 서비스를 중단하지 않고 배포를 진행하는 것 중단 배포: 시스템 전체를 정지한 뒤 배포를 진행하는 것 => 구버전과 신버전이 동시에 서비스되면 안되는 경우나 무중단 배포에 너무나 큰 비용이 들 때 중단 배포를 실시한다. 현재 위치 배포 ( 무중단 배포 ) 새롭게 서버를 생성하거나 줄이지 않고 배포하는 것 예) 절반은 잠시 로드 밸런서에서 제외하고 코드를 배포한 뒤 다시 로드 밸런서에 등록하고 나머지에 똑같은 방법을 진행하는 것 블루/그린 배포 ( 무중단 배포 ) 현재 블루 그룹에 서버들이 존재하며 그린 그룹에 똑같은 수의 ..
[AWS] 운영 서버 환경 구성 - 외부 환경 ( 도메인, HTTPS, SSL/TLS ) AWS Route 53을 이용해 도메인을 등록할 수 있다 👏 간단한 도메인 작동 원리 1. 클라이언트가 웹 주소창에 xxx.xxx.com을 입력하고 엔터를 친다. 2. DNS 서버에 도메인의 실제 IP 주소를 알고 있는지 물어본다. 3. IP 주소를 알고 있는 DNS 서버는 클라이언트에게 IP 주소를 알려준다. 4. 클라이언트는 IP 주소로 페이지 조회 요청을 한다. 도메인 등록 도메인 네임 등록 대행자에 돈을 내고 사용 가능한 도메인을 구매하고, 원하는 IP 주소를 도메인에 연결해달라고 요청 => 대행자가 DNS 서버들에 도메인과 IP 주소를 등록해준다. GoDaddy 같은 유명한 업체들을 통해 등록할 수도 있고, AWS에서는 Route 53이라는 서비스를 통해 도메인을 등록할 수 있다! 로드 밸런서에..
[AWS] 운영 서버 환경 구성 - 다중 서버 ( 오토 스케일링, 로드 밸런서 ) AWS에서 Auto Scaling 그룹을 이용해 다중 서버를 구성해보자 😃 Auto Scaling: 트래픽에 따라 서버의 수를 자동으로 늘리고 줄이는 것 Auto Scaling Group - AWS에서 제공하는 자동 다중 서버 서비스 - 같은 사양, 같은 환경, 같은 코드를 가지고 있는 똑같은 EC2 인스턴스들의 묶음 - 자원 사용량 또는 시간을 기준으로 Auto Sacling을 설정할 수 있음 생성하는 방법 ✔ 1. 다중 서버로 만들고자 하는 인스턴스의 현재 환경을 스냇숍으로 생성해서 AMI으로 만든다. 2. 시작 템플릿에 AMI을 이용해 어떤 설정(사양, 보안 그룹, 네트워크 설정 등)의 인스턴스를 띄울지 정의하고, 생성한다. 3. 이 시작 템플릿을 이용해 인스턴스를 실행할 Auto Scaling 그..
[AWS] 운영 서버 환경 구성 - 단일 서버 AWS 입문자용으로 추천하는 책을 읽으며 내용을 정리해보려고 한다. 참고한 책은 '서비스 운영이 쉬워지는 AWS 인프라 구축 가이드' www.yes24.com/Product/Goods/68799454 서비스 운영이 쉬워지는 AWS 인프라 구축 가이드 AWS와 서비스 운영에 첫걸음을 내디딜 수 있게 도와준다!서비스 개발과 인프라 관리를 담당하는 실무자의 운영 노하우를 배우자!이 책은 AWS나 클라우드 환경에 익숙하지 않은 분들이 AWS 서비스�� www.yes24.com 1.1 운영 서버 운영 서버는 실제 사용자들을 대상으로 서비스하는 서버로 트래픽 대응, 빠른 응답 속도, 높은 가용성 을 보장해야 한다. 운영 서버를 관리 하기 위한 세 가지 단계 ( 환경 구성, 코드 배포, 모니터링 ) 1.2 운영 서버..