💻 프로그래밍
-
docker-compose 무중단 배포 1편 (blue, green)💻 프로그래밍/K8s & Docker 2022. 5. 29. 01:54
안녕하세요! 개발자 Jay입니다! 오늘은 CI/CD를 위한 docker-compose 무중단 배포에 대해서 정리해봤습니다! 다들 로컬에서 테스트를 하거나 서버에서 docker-compose up, down 등으로 새로 컨테이너를 띄우는 과정들을 해보셨을 겁니다! 만약 production 환경에서 이렇게 하게된다면 어떻게 될까요? 정답은 컨테이너가 재시작 되는 시점 동안 사용자들이 오류를 겪게 되겠죠?? 혹은 배포하면서 문제가 생겨서 컨테이너가 뜨지 않는다면 동일하게 오류를 겪게 되겠죠? ㅎㅎ 그렇기 때문에 production환경에서는 무중단 배포를 해야 합니다! 1. 무중단 배포 종류 무중단 배포는 크게 두가지 종류로 나뉜다고 합니다. - rolling update 배포 새로 배포되어야 하는 버전을 하나..
-
[쿠버네티스] docker 이미지 빌드 부터 helm 배포까지 [2부]💻 프로그래밍/K8s & Docker 2022. 5. 17. 20:46
[쿠버네티스] docker 이미지 빌드 부터 helm 배포까지 [1부] 1부에 이어서 2부 시작하겠습니다! :D 1부에서는 도커 이미지를 빌드하고 빌드한 이미지로 k8s(쿠버네티스) 파드로 띄우기까지 했습니다! 2부에서는 이 과정을 Helm Chart(이하 helm)라는 도구를 통해 서비스 배포를 해보겠습니다. 1. What is Helm Chart? 홈페이지에 대문작만하게 쿠버네티스를 위한 패키지 매니저라고 쓰여있네요 ㅋㅋ 맞습니다. 정말 말 그대로 쿠버네티스 배포를 위해 서비스들을 템플릿 형태로 정의하고 그 정의된 템플릿으로 배포하는 도구입니다! 자세한 내용은 공식문서를 확인하시길 바라며, 저희는 일단 먼저 써보도록 하겠습니다! 먼저 helm을 설치해야 합니다. (helm 설치 가이드) mac 에서는..
-
[쿠버네티스] docker 이미지 빌드 부터 helm 배포까지 [1부]💻 프로그래밍/K8s & Docker 2022. 5. 16. 00:16
현재 메인으로 맡고 있는 서비스의 인프라는 쿠버네티스를 사용하고 있습니다. 다만 devOps팀, 저희 팀장님께서 거의 인프라 구성을 다 해주셔서 저는 잘 모르고 있는 상태라 어느 정도 스터디의 필요성을 느끼게 되어 로컬에 minikube 클러스터를 설치하여 실습을 하기로 했습니다ㅎㅎ what is minikube? minikube quickly sets up a local Kubernetes cluster on macOS, Linux, and Windows. We proudly focus on helping application developers and new Kubernetes users. 미니쿠베는 말그대로 작은 쿠버네티스? 쿠버네티스를 로컬에서 테스트 할 수 있도록 만든 가벼운 쿠버네티스 정도로만..
-
TypeScript vs Python Mixin 차이를 알아보자잇! (feat.다중상속)💻 프로그래밍/TypeScript 2022. 4. 25. 02:50
안녕하세요! 개발자 Jay입니다~ 최근에 TypeScript 공부를 하고 있습니다! 회사 기술 스택 중 nest.js를 사용하고 있어서 + 새로운 언어에 대한 궁금증 때문인데요~ python을 오래 쓰면서 TypeScript 문법을 공부하다 보면 오 이거 문법이 많이 다르네, 특이하네 하는 것들이 있습니다. 그중 하나가 Mixin 문법인데요. 오늘은 TypeScript와 python의 Mixin에 대해서 알아보겠습니다. 1. Mixin(믹스인) 이란? 처음 믹스인을 봤을 때는 "이거 그냥 클래스(Class)아닌가?" 라고 생각했는데 비슷하면서도 용도가 약간 다릅니다. 믹스인은 클래스와 동일한 형태이지만 필요한 메서드(Method)만 확장하기 위해 쪼개져 있는 클래스라고 보면 될 것 같습니다. 그렇기 때문..
-
"아니 왜! 쿠버네티스의 특정 Node에서만 배포가 실패 하는거야?"를 임시로 해결해본 썰 (feat. CrashLoopBackOff)💻 프로그래밍/K8s & Docker 2022. 4. 8. 23:48
안녕하세요! 개발자 Jay입니다~ 저희 회사에서는 대부분의 서비스들 쿠버 네티스(kubernetes)로 운영고 있습니다. 저는 쿠버네티스에 대해 잘은 모르고 서비스 배포하고 스크립트 돌리거나 할 때 파드(Pod)에 접근해서 특정 컨테이너에 배포되어있는 앱의 스크립트를 실행시키던지? 로그를 보거나, 파드가 잘 뜨고 있나~ 보는 정도의 수준으로만 알 고 있었습니다ㅋㅋ 그러다 최근에 피쳐(feautre) 개발을 끝내고 서비스를 배포하고 있는데 배포가 계속 실패하는 상황에 직면하였습니다. 가뜩이나 쿠버네티스에 대해 잘 모르는 상황이라 배포가 계속 실패 될 수록 💩줄이 탔습니다. 다시 배포를 시작하고 파드가 뜨는걸 확인해봤습니다. 보니까 특정 노드에서 파드가 restart를 하면서 CrashLoopBackOff ..
-
[NestJS] AuthGuard는 어떻게 JwtStrategy를 찾는걸까? 마법인가? 🥳💻 프로그래밍/node 2022. 4. 7. 03:42
안녕하세요! 개발자 Jay입니다. 오늘은 Nest.js 스터디중 잘 이해가 안 되었던 것들에 대해 정리해보려고 합니다. 일단 갑자기 Nest.js 스터디를 하게된 건 회사에서 사용하는 백엔드 애플리케이션 기술 스택이 Django, FastAPI, Nest.js 이렇게 크게 세 가지 정도를 사용하고 있기 때문에 가장 접근해보지 못한 Nest.js 스터디를 시작했습니다. 스터디를 하면서 사내 서비스 피쳐(feature) 개발을 하는데 도움이 될 것 같기도 했고요! 여하튼 장장 6시간의 강의를 듣고 UseGaurds 데코레이터를 사용하여 권한을 JWT 토큰 인증하는 과정에서 의문점이 생겼습니다. providers에 주입된 커스텀 Strategy를 AuthGuard에서는 어떻게 찾는 걸까? @nestjs/pas..
-
Context Manager 섹시하게 사용하기 😎💻 프로그래밍/Python 2022. 1. 22. 16:17
안녕하세요. 오늘은 Context Manager에 대해서 알아보려고 합니다. 먼저 Context Manager가 뭔지에 대해 알아야겠죠? A context manager is an object that defines the runtime context to be established when executing a with statement. The context manager handles the entry into, and the exit from, the desired runtime context for the execution of the block of code. Context managers are normally invoked using the with statement (described i..
-
Redis 고가용성으로 사용하기 with Sentinel💻 프로그래밍/DB 2022. 1. 2. 10:43
안녕하세요! 운동하는 개발자 Jay 입니다. 오늘의 주제는 Redis를 고가용성으로 사용하는 방법에 대해 이야기해보려고 합니다. 고가용성이란 말 그대로 "가용성이 높다"라는 의미로 절대 고장 나지 않음을 의미한다고 위키백과가 그러네요 ㅋㅋㅋ 보통 Redis는 1개를 사용하지 않고 Master Slave 관계로 Replication 하여 사용합니다. 아시다시피 1대의 Redis만 사용하고 있다면 장애상황에서 엄청난 헬(Hell)을 경험할 수 있습니다. 위 이미지 처럼 replicaiton 되어있는 상황에서, Master Redis가 장애가 나면 slave로 client는 연결되고 write는 불가, read만 가능한 상황이 됩니다. 이런상황에서 write가 안되기 때문에 redis write 하는 로직이 ..