Kubernates를 사용하며 자주 사용하는 기본명령어 (사실 이것밖에 모른다.)를 그래도 조금 익숙한 Docker 명령어와 비교해서 정리를 해본다. Kubernates 명령어 Docker 명령어 Desc kubectl run eg) kubectl run mynginx --image nginx docker run mynginx라는 이름의 Pod를 nginx 라는 image를 이용하여 생성 kubectl get pod docker ps Pod의 상태를 확인 kubectl describe docker inspect Event 기록을 포함한 Pod의 상태 정보 확인 kubectl logs eg) kubectl logs -f mynginx docker logs Pod의 로그정보 확인 kubectl exec eg..
지난 포스팅에서 Spring Cloud Config 를 통해 설정 외부화를 하는 과정을 알아보았다. 설정 외부화의 수단은 Github이었고 public repository에 있는 설정 파일에 대해 알아보았다. 이번에는 Github의 private repository에 접근하여 설정값을 가져오는 방법에 대해 알아보겠다. Github에 private repository를 하나 생성했다. 그리고 branch는 master를 하나 생성했다. 또한 설정을 가지고 올 oingdaddy.properties 파일을 생성을 해 두었다. private repository에 있는 값을 가지고 오는 방법은 크게 두가지가 있다. 첫번째는 ConfigServer application의 application.yml에서 직접 git..
MSA로 구성을 하면 어려워지는 기능 중 로그추적 기능이 있다. 기존의 Monolithic 구조에서는 로그 추적을 쉽게 할수 있었는데 app이 분산됨에 따라 어려워졌다. 하지만 훌륭한 로그 추적 솔루션들이 생기기 시작했고 우리는 그것을 잘 이용만 하면 된다. 이번에 다루려고 하는 훌륭한 솔루션은 바로 Spring Cloud Sleuth와 Zipkin이다. 아주 간단하게 이것들에 대해서 설명을 하자면 Spring Cloud Sleuth는 각 어플리케이션에서 발생하는 로그들에 대해 trace id 를 부과하는 역할을 한다. trace id라 함은 서비스의 고유한 추적 ID라고 이해하면 된다. 이렇게 trace id가 생성이 되면 Zipkin은 trace id를 토대로 UI를 통해 추적을 용이하게 해주는 역할..
IT 기술이 급변하면서 많은 회사들이 이를 따라가기 위해 열심히 노력을 하고 있다. (아닌곳도 있고..) 필자는 아키텍트 직군이다. 아키텍트도 일반적으로 여러 기준(TA, AA, SA, DA 등등)으로 나뉘어져 있는데 Kubernates, Docker, Spring Cloud 이런 기술들이 나오면서 경계가 없어져버린 느낌이다. 물론 다른 사람의 영역까지 다 할수 있는건 뛰어난 아키텍트가 되기 위한 좋은 기회이지만 그만큼 뒤쳐지지 않게 노력을 많이 해야할듯 싶다. 최대한 내 일이 아니라고 다른 사람에게 미루지 않고 웬만하면 내가 다 할수 있는 뛰어난 사람이 되고 싶어서 오늘도 달려본다. 잡설이 길었는데 오늘은 Kubernates 첫걸음을 떼 보려고 한다. 이를 위해 가장 먼저 Kubernates 설치를 해..
docker-compose는 조금 더 docker를 편하게 사용할수 있도록 해주는 도구이다. Docker 플러그인 같은 개념이라고 생각하면 이해가 편하다. 근데 뭘 조금 더 편하게 해줄까? docker에서 수행되는 일련의 작업(eg. build, run, network, volume..)을 docker-compose.yml 파일을 통해서 한방에 하게 해준다. docker-compose.yml 파일은 docker로 할 일에 대한 작업기술서 같은 것이라고 보면 된다. 예를들면 a라는 image를 빌드하고 빌드한 image를 실행하고 b라는 image도 network, volume 등을 설정하여 실행을 시키고 싶을때 기존에 각각 docker 명령어로 수행했어야 했던 일을 docker-compose를 통해 한방..
Docker image를 빌드하고 다음에 또 사용하고 싶은 경우가 있다. 그럴때 어떻게 하는지에 대해서 알아보자. 사전준비 일단 빌드를 하는 과정은 건너뛰고 간단하게 보여주기 위해 아무거나 Docker Hub로 pull을 받는다. 필자는 nginx를 선택을 하였다. Docker Hub로부터 pull을 받는 방법은 Docker Hub에 접속하여 nginx를 검색한다. 그럼 위와 같이 official image가 나올것이고 눌러서 들어간다. 그럼 우측에 다음과 같이 이 image를 받을 수 있는 명령어를 볼 수 있다. 이렇게 nginx를 일단 받아 놓는다. 물론 새로운걸 빌드를 해도 상관은 없다. 그리고 Docker Hub에 접속해서 계정을 만든다. 따로 회원가입 페이지가 있는게 아니라 그냥 여기에 정보를 ..
Hystrix가 무엇인가? 에 대한 내용은 지난 시간에 다루었다. 열심히 이 method, 저 method에 @HystirxCommand를 달아 놓고 이게 잘 동작하고 있는지 직접 확인을 하는건 작은 프로젝트에서는 가능할지 몰라도 서비스의 개수가 늘어나면 늘어날수록 어려움에 처하게 된다. 이럴때 유용하게 사용하라고 Hystrix에서는 모니터링을 할 수 있는 Dashboard를 제공을 한다. Hystrix Dashboard는 single instance에 대해 @HystirxCommand가 정의된 method에 대한 모니터링을 수행할수도 있게 해주고 Turbine을 이용해 multi instance에 대해 @HystirxCommand가 정의된 method에 대한 모니터링을 수행할수도 있게도 해준다. 즉 실..
현재까지 Service Discovery, API Gateway, Configuration Externalization 등을 통해 MSA 수박 겉을 핥아보고 있다. 간단하게 현재까지 이런저런 기능을 구현했었는데 장애가 발생하는 경우에 대해서는 다룬적이 없다. 이렇게 서로 API 통신으로 모든것을 하는데 문제가 발생하면 그걸 어떻게 감지하고 어떻게 처리할까? 이번에도 역시 Neflix에서 제공하는 OSS인 Hystrix를 이용해서 MSA환경에서 어떻게 장애에 대처하는지 알아보도록 하겠다. Hystrix가 제공하는 핵심 기능은 Circuit Breaker 이다. 이건 회로차단기 라는 뜻인데 회로차단기는 전기 시스템에서 과전류가 발생하면 회로를 차단하여 시스템을 보호하는 기능을 말한다. MSA에서는 API 서..