만들게 된 계기 Django에서 테스트 코드를 작성할 때 테스트용 객체를 생성해 주는 factory_boy 라이브러리를 사용해 좀 더 손쉽게 테스트코드를 작성할 수 있었다. 마찬가지로 FastAPI에서도 사용하기 위해 factory_boy의 SQLAlchemyModelFactory를 사용하고자 했으나 다음과 같은 문제가 있었다. session 동적 할당이 불가능하다. 클래스를 정의하는 시점에 Meta 클래스 내 sqlalchemy_session에 session을 정의해주어야 한다. 이 방식은 테스트코드 런타임에 session을 동적 할당하는 것이 불가능해서 session 기반의 데이터들이 테스트 전반에 영향을 미치는 문제가 있다. 아래는 sqlalchemy_session에 session을 할당하는 예시이..

신규 API 서버에서는 Oauth 방식의 SNS로그인과 JWT를 사용한 토큰 기반의 인증/인가 방식을 구현하였다. 토큰 기반의 인증 방식을 사용한 이유는 다음과 같다. 기존 API 서버에도 동일한 인증 방식을 쉽게 적용할 수 있다. 서버에서 디비 조회 없이도 검증이 가능하다. 개념 설명은 다른 포스팅에서 다루도록 하고 구현에 집중하여 살펴보겠다. 스펙 Python 3.12 FastAPI 0.103.1 구현 Access Token 사용 유저의 인가(Authorization)를 검증할 때 access token이 유효한지로 판단한다. access token에는 서비스에 필요한 유저 정보와 만료일자 등이 포함되며 해당 포스팅에서는 다음과 같은 데이터를 포함한다. { user_id: int, user_devic..

약 한 달에 걸쳐 진행한 챌린지가 끝났다. 쿠버네티스에 대한 지식이 거의 없었기 때문에 시작이 조금 지지부진했지만 호스트님의 가이드 PPT와 팀원들과의 위클리 스크럼 진행 덕분에 마무리할 수 있었다. 짧은 회고로 마무리 해보자. 진행 과정 Kubernetes를 사용하여 컨테이너화된 앱들을 운영하고, 앱들의 로그를 수집하여 모니터링 시스템을 구축하는 프로젝트를 진행했다. 쿠버네티스 클러스터는 private subnet에 두어 외부에서 접근이 불가능하기 때문에 LoadBalancer 타입의 Service object를 추가하여 앱 서비스에 접근하도록 했다. 앱 배포는 ArgoCD에서 App of Apps 패턴을 적용하여 관리하였다. App of Apps 패턴은 앱 별로 Application CRD를 생성하고..

넘블이라는 개발자 교육 사이트에서 Kubernetes로 모니터링 시스템 구축하기 챌린지를 진행하게 되었다. 쿠버네티스에 대한 공부를 하고 싶었던 참인데 우연히 발견하게 되어 후다닥 신청했다. 챌린지를 진행하며 진행과정을 포스팅으로 남겨 두려 한다. 쿠버네티스뿐만 아니라 ArgoCD, ELK Stack, Prometheus, Grafana 도 사용하니, 관심 있으신 분들은 아래 포스팅을 참고하면 되겠다. :) 관련 포스팅 1. 쿠버네티스 구성 살펴보기 2. 인프라 설정 및 Nginx 띄워보기 3. ArgoCD 개념 파악 및 배포하기 4. ELK Stack으로 로그 모니터링 시스템 구축하기 5. Prometheus와 Grafana 사용해 보기

목차 1. 쿠버네티스 구성 살펴보기 2. 인프라 설정 및 Nginx 띄워보기 3. ArgoCD 개념 파악 및 배포하기 4. ELK Stack으로 로그 모니터링 시스템 구축하기 5. Prometheus와 Grafana 사용해보기 👈 here 이번 포스팅에서는 Prometheus와 Grafana를 사용할 것이다. 간단하게 개념부터 살펴보자. Prometheus(프로메테우스) 모니터링 및 경고 툴킷으로 메트릭 이름과 키/값 쌍으로 식별되는 시계열 데이터를 수집한다. 매트릭이란 숫자 측정을 의미하며 요청 시간, 연결 수, 활성 쿼리 수 등이 해당한다. PromQL이라는 프로메테우스의 자체 쿼리 언어를 제공하여 쿼리문으로 시간 관련 쿼리 기능 등을 제공한다. 아래 그림은 프로메테우스 아키텍처이다. Grafana..

목차 1. 쿠버네티스 구성 살펴보기 2. 인프라 설정 및 Nginx 띄워보기 3. ArgoCD 개념 파악 및 배포하기 4. ELK Stack으로 로그 모니터링 시스템 구축하기 👈 here 5. Prometheus와 Grafana 사용해보기 이번 포스팅에서는 ELK Stack을 사용하여 로그를 수집하고 모니터링하는 로그 모니터링 시스템을 구축해 보겠다. 우선 ELK Stack에 대해 알아보자. ELK Stack이란 ELK Stack이란 ElasticSearch, Kibana, FileBeats, LogStash 서비스를 사용하여 여러 시스템의 로그를 수집하고 전처리한 뒤 데이터 분석과 시각화 시스템을 제공하는 로그 관리 총 집합체이다. ELK Stack을 구성하는 서비스들의 역할은 다음과 같다. FileB..

목차 1. 쿠버네티스 구성 살펴보기 2. 인프라 설정 및 Nginx 띄워보기 3. ArgoCD 개념 파악 및 배포하기 👈 here 4. ELK Stack으로 로그 모니터링 시스템 구축하기 5. Prometheus와 Grafana 사용해보기 이번 포스팅에서는 ArgoCD가 무엇인지 살펴보고 쿠버네티스에 배포한 후 app을 등록해 보는 것까지 진행해 보겠다. ArgoCD ArgoCD 공식 홈페이지에 가면 지속배포(CD)를 위한 GitOps 방식의 쿠버네티스 관리 툴이라고 소개한다. GitOps란 인프라 자동화를 위해 코드를 작성하여 인프라를 구성하고 코드의 변경점이 발생할 때 자동배포 등을 지원하는 것을 의미한다. 이러한 GitOps 방식의 배포관리라는 것은 서버 인프라를 테라폼코드로 작성해서 배포를 관리할..

목차 1. 쿠버네티스 구성 살펴보기 2. 인프라 설정 및 Nginx 띄워보기 👈 here 3. ArgoCD 개념 파악 및 배포하기 4. ELK Stack으로 로그 모니터링 시스템 구축하기 5. Prometheus와 Grafana 사용해보기 이번에는 인프라를 설정하고 쿠버네티스로 Nginx index 페이지에 접근해 보는 것까지 진행해 보겠다. 나는 네이버 클라우드 플랫폼의 쿠버네티스 컨테이너 서비스를 사용하여 쿠버네티스 클러스터를 생성했다. 네트워크 설정하기 쿠버네티스 클러스터를 설정하기 전에 몇 가지 선수 작업이 있다. 간단한 개념과 함께 살펴보자. 1. VPC 생성하기 VPC는 논리적으로 격리된 네트워크 공간으로, 사용자가 VPC 별로 자체 네트워크 환경을 구축하고 리소스를 관리할 수 있도록 도와준다..

목차 1. 쿠버네티스 구성 살펴보기 👈 here 2. 인프라 설정 및 Nginx 띄워보기 3. ArgoCD 개념 파악 및 배포하기 4. ELK Stack으로 로그 모니터링 시스템 구축하기 5. Prometheus와 Grafana 사용해보기 쿠버네티스는 공식 문서가 매우 잘 되어있다. 다만, 많은 내용을 담고 있어 쿠버네티스 구성에 대한 내용을 간략하게 정리해 보았다. https://kubernetes.io/ko/docs/concepts/overview/ 쿠버네티스란 무엇인가? 쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식할 수 있고, 확장 가능한 오픈소스 플랫폼으로, 선언적 구성과 자동화를 모두 지원한다. 쿠버네티스는 크고 빠르게 성장하 kubernetes.io 쿠버네티스란 컨테이너화된..
- Total
- Today
- Yesterday
- Pydantic
- JWT
- kubectl
- supervisord
- NCP
- pytest
- kibana
- factory_boy
- async
- Project
- DevOps
- promethus
- grafana
- kubernetes
- fastapi
- elk
- elasticsearch
- bugfix
- jwt로그인
- OAuth
- gradle
- sns로그인
- await
- ArgoCD
- Supervisor
- numble
- miniproject
- coroutine
- GitOps
- logstash
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |