인프라란, 내가 만든 서비스가 돌아가기 위해 필요한 기반 시설과도 같다.
예를 들어 단순히 우리가 빵 가게를 차린다고 생각하면, 빵을 팔 가게도 있어야할 것이고, 빵집에 전기도 들어와야할 것이다. 이와 마찬가지로 IT인프라란, 서비스가 돌아가기 위해서 서버나 네트워크 장비, 서비스를 유지, 관리할 소프트웨어 등을 포함한다.
https://www.ibm.com/kr-ko/topics/infrastructure
(인프라 환경의 발전)
인프라 환경이 발전함에 따라, 컨테이너 인프라 환경이라는 게 생겨났다. 컨테이너 인프라 환경이란, 독립적인 환경에서 개발해도 모두 동일한 결과를 얻을 수 있고 소프트웨어의 성능과 인프라의 리소스를 최대한 확보할 수 있는 인프라 환경이다. 이제 인프라에 대한 이해가 어느정도 되었으니 만드는 어플리케이션의 구조를 살펴보자.
Mono-라는 이름과 같이 하나의 어플리케이션 내에 여러가지 서비스를 갖추고 있는 경우이다. 하나의 어플리케이션에 여러 가지 서비스가 통합되어있으므로,
- 빠른 개발 속도
- 비교적 안전한 보안
하지만, 단점도 존재하는데
- 서비스가 상호 의존을 하고 있어서 에러가 날 경우 골치 아파진다
- 수정 사항이 있으면 전체를 재빌드, 배포해야한다.
- 유지보수의 어려움
- 가동 시간
보통 은행의 경우 모놀리식 아키텍처를 사용한다고 한다.
MSA는 시스템 전체(예를 들면 네이버)에서 각각의 서비스가 독립되어 있는 경우를 이야기한다. 따라서 장점은
- 유지보수가 쉽다
- 해당 기능에 맞게 다양한 접근이 가능하다.
- 빠른 빌드와 배포가 가능하다.
- 특정 서비스 부분을 이해하기 쉽다.
반대로 단점은,
- 서비스끼리의 통신 중 오류가 발생할 수 있다.(이로인해 가동시간의 증가 가능성)
- 서비스 마다 데이터베이스를 접근하는 방식같은걸 새로 만들어야하기 때문에 개발하기 까다로울 수 있다.
- 정말 많은 호출이 존재하기 때문에 이런 것을 모니터링하기가 어렵다.
이런 특성 때문에 마이크로 아키텍처를 이용하기 좋은 인프라(인프라를 잘게 잘게 쓸 수 있으므로)가 바로 컨테이너 인프라 환경이라고 할 수 있다. 여기서 컨테이너 자체가 DOCKER이고, 이를 관리하는 것을 Kubernetes라고 한다.
https://www.ibm.com/kr-ko/cloud/learn/microservices#toc------aaMEAd1V
추가적인 내용이나, 비판을 환영합니다!
(다만 공격적이면 상처를 받을 수가 잇읍니다..)