본문 바로가기

분류 전체보기

쿠버네티스로 MSA DevOps 환경 구축; 4. 포트포워딩 없는 Minikube 쿠버네티스로 MSA DevOps 환경 구축1. 로컬 쿠버네티스설치2. 로컬 컨테이너 Registry3. Pod, Service, Deployment4. 포트포워딩 없는 Minikube5. URL기반 Service - Ingress6. Helm | Chart - 패키지 설치7. Helm | Chart - 패키지 만들기8. ArgoCD - GitOps5. 윈도우 WSL2기반 쿠버네티스의 제약윈도우 운영체제 컴퓨터나 노트북에 쿠버네티스 클러스터를 설치해 사용해 보면, 인터넷에서 검색해서 찾은 방법이 안 되는 경우가 종종 있다고 느꼈을 것이다. 대표적인 것이 외부 네트워크로 서비스를 노출(expose)할 때 일 것이다. 어떤 곳은 NodePort만 사용하면 외부에서 접속이 가능하다고 하는데, 어떤 곳은 그렇게 .. 더보기
쿠버네티스로 MSA DevOps 환경 구축; 3. Pod, Service, Deployment 쿠버네티스로 MSA DevOps 환경 구축1. 로컬 쿠버네티스설치2. 로컬 컨테이너 Registry3. Pod, Service, Deployment4. 포트포워딩 없는 Minikube5. URL기반 Service - Ingress6. Helm | Chart - 패키지 설치7. Helm | Chart - 패키지 만들기8. ArgoCD - GitOps 4. 쿠버네티스 배포쿠버네티스에 마이크로서비스를 배포하려면 먼저 쿠버네티스가 어떻게 구성되어 있는지 살펴보면, 좀 더 쉽게 배포의 절차를 이해할 수 있을 것이다. 아래 그림은 쿠버네티스 아키텍처를 설명해 주는 쿠버네티의 공식 문서에서 가져왔다. 보기에 복잡해 보이지만 화살표 연결만으로도, cloud-control-manager는 AWS, GCP와 같은 clou.. 더보기
클라우드 네이티브, 마이크로서비스 아키텍처(Cloud native MSA) 0. 잘못된 사용이 낳은 재난몇 명의 경험이 부족한 개발자들이 대용량 서비스를 수용할 목적으로 쇼핑몰을 마이크로서비스로 만들었다. 하지만, 전체적인 마일스톤이나 설계가 없는 상태에서 개발을 진행하면서, 새로운 기능이 필요할 때마다 새로운 컨테이너로 만들고 새로운 데이터베이스를 만들어 쿠버네티스 클러스터에 배포하고 서비스의 안정성을 위해 많은 수의 ReplicaSet을 만들었다. 심지어, 구조에 대한 고민 없이 분리된 데이터베이스의 결과를 조합하는 컨테이너도 만들어 배포했다. 그 결과 수백 명밖에  사용하지 않는 서비스가 수백 개의 컨테이너와 수십 개의 노드를 사용해야만 하는 복잡한 시스템이 만들어졌고, 규모에 비해 엄청난 운영비와 많은 인력이 일하는 이상한 결과를 초래했다. 무엇이 문제일까? 원인을 파악.. 더보기
Neovim; DevOps에 최적인 vim 에디터를 업그레이드 해보자 0. 터미널(콘솔)에서 사용하는 에디터많은 경우 윈도우를 사용하는 개발자는 VSCode와 같은 GUI기반의 IDE에서 대부분의 작업을 하고 터미널에서 복잡한 편집 작업을 하기 않기 때문에, 윈도우의 메모장 수준인 nano와 같은 간단한 편집기를 사용하는 일 이 많았다. 하지만, DevOps환경에서 개발자는 보다 많은 작업을 터미널에서 하게 되고, 설정파일과 배포에 필요한 작업파일뿐 아니라, 가끔은 소스코드에 대한 편집작업도 터미널에서 하게 된다. 터미널에서 사용할 수 있는 에디터에는 vi계열의 에디터emacs계열의 에디터기타, nano, ne, 등이 있는데, 보통 리눅스 계열의 OS에 기본으로 설치되어 있기도 하고, 개인적으로도 vi계열의 에디터을 좋아한다. vi는 vim (vi improved) 버전이.. 더보기
시계열 데이터베이스 사용하기; 2. InfluxDB 이용한 모니터링 대시보드 시계열 데이터베이스 사용하기1. InfluxDB 준비하기2. InfluxDB 이용한 모니터링 대시보드0. InfluxDB를 이용한 시스템 모니터링프로그램을 개발하다 보면 모니터링이 필요하다는 생각이 자주 든다. 여러 모듈들이 연결되어 있는 서비스의 경우 서비스의 흐름을 따라 각 모듈의 로그를 보면서 문제점을 찾아야 하는데, 개발할 때마다 쉽게 찾을 수 있는 방법이 있었으면 하는 생각이 들곤 한다. 로그에서 내용을 찾을 때 가장 유용했던 프로그램이 내 경우에는 ELK (Elastic Search / Logstach / Kibana) 였던 것 같다. 다음에 한번 ELK에 대해서도 정리해 놓아야겠다. 하지만, 모듈들 연결되고 동작하기 시작하면 다음 고민은 내가 만든 프로그램이 서버에서 문제없이 잘 동작하는지에.. 더보기
ueli: 윈도우용 스팟라이트(Spotlight) - 검색, 실행, 계산 등을 빠르게 Mac을 사용하면 스팟라이트(Spotlight)라는 편리한 기능을 많이 사용하게 된다. 프로그램을 실행하거나, 문서를 빨리 찾거나, 간단한 계산을 하거나, 인너넷에 있는 정보를 검색할 때에도 Command + Space를 누르면 나오는 입력창을 사용하면 빠르게 작업할 수 있기 때문에, 한번 사용하면 자주 사용할 수밖에 없는 필수 기능이다. 더 많은 기능을 찾는 사람들은  Alfred를 사용하는데, Powerpack을 구매하면 미리 만들어 놓은 자동기능(workflow)을 사용할 수 있어 더 많은 기능을 키보드 하나로 해결할 수 있다. 윈도우로 작업하면 가장 아쉬웠던 것이 윈도우용 스팟라이트인데, 윈도우에서도 동작하는 ueli라는 프로그램을 우연히 발견해서 작업의 효율을 올리고 있다.1. ueli 설치아래.. 더보기
쿠버네티스로 MSA DevOps 환경 구축; 2. 로컬 컨테이너 Registry 쿠버네티스로 MSA DevOps 환경 구축1. 로컬 쿠버네티스설치2. 로컬 컨테이너 Registry3. Pod, Service, Deployment4. 포트포워딩 없는 Minikube5. URL기반 Service - Ingress6. Helm | Chart - 패키지 설치7. Helm | Chart - 패키지 만들기8. ArgoCD - GitOps3. 테스트용 docker image쿠버네티스에 배포 테스트를 하기 위해는 docker image가 필요하다. 좀 더 DevOps에 가까운 시나리오로 진행해 보기 위해, Nginx와 같이 이미 만들어져 있는 docker image를 사용하기보다, 간단하게 프로그램으로 만들어서 테스트하는 것이 좋을 것 같아, a. 파이썬과 FastAPI를 사용해서 간단한 API .. 더보기
시계열 데이터베이스 사용하기; 1. InfluxDB 준비하기 시계열 데이터베이스 사용하기1. InfluxDB 준비하기2. InfluxDB 이용한 모니터링 대시보드0. 시계열 데이터베이스 (Time Series Database)를 왜 사용할까?회사에서 데이터베이스를 이용해서 데이터를 저장하면 많은 경우 이 데이터를 시간의 흐름에 따른 현상을 파악하기 위한 리포트나 Dashboard 형태로 사용한다는 것을 알게 된다. 예를 들어, 월별 판매랑, 평균 판매량, 일별 장애 건수, 서비스 사용 시간, 시간별 자원 사용량 등 많은 경우 시간과의 관계를 파악하려고 데이터를 사용한다. 이렇게 시간과 관련된 데이터분석, 즉 기간 내 최고, 최저, 합, 평균, 분산 등을 구할 때, 기존의 RDB보다 빠르게 얻을 수 있도록 만들어진 데이터베이스가 시계열 데이터베이스(Time Seri.. 더보기