728x90
IaaS, 모놀리식 아키텍처, MSA, 컨테이너 인프라 환경
위와 같은 단어들을 들어보신 분이 있으실 겁니다.
하지만 저 단어들의 정확한 뜻을 알지는 못하는 분도 있을겁니다.
k8s를 배우기전에 "왜 배워야 하지?"라는 생각이 먼저 들었습니다.
"배포를 하기위한 툴인 것같은데 개발자가 개발만 잘하면 되지" 라는 생각이 먼저 들었습니다.
하지만 배우면 배울수록 개발에 큰 영향을 주는 것이였구나를 느끼고 있습니다.
먼저 단어 뜻부터 설명하겠습니다.
IaaS란
Iaas란 Infrastructure as a Service의 약자입니다.
서비스로서의 인프라구조라는 뜻입니다.
예를 들어보겠습니다. 만약 어떤 Service를 이용하기 위해서는 반드시 Linux환경에서만 할 수 있다면
Window를 사용하는 사람들은 사용할 수 없을 것입니다. 하지만 어떤 환경이든 상관없이 사용가능하게
미리 환경을 구현해 놓았다면 더 인기가 많을 것입니다.
위의 예가 IaaS입니다.
즉, IaaS란 이미 구성된 환경을 사용자의 필요에 따라 선택,조합해서 사용가능하게 만든 인프라구조입니다.
컨테이너 인프라 환경이란
우선 컨테이너의 뜻부터 알아야 합니다.
컨테이너란 1개의 운영체제 커널에서 다른 process의 영향을 받지않고 독립적으로 실행되는 process상태
를 뜻합니다.
쉽게 말해 Application을 만든 개발자와 사용자의 소프트웨어 환경이 달라도 Application이 실행가능하도록 Application을 담은 상자라고 생각하시면 됩니다.
컨테이너 인프라 환경이란 컨테이너를 Applicaiton을 담는게 아닌 Application의 특정 기능을 담아서 사용하는 환경을 말합니다. 즉, 각각의 서비스가 독립적으로 동작한다는 것입니다.
모놀리식 아키텍처 vs MSA(마이크로 서비스 아키텍처)
그렇다면 왜 서비스를 독립적으로 동작하게 만들까요
먼저 모놀리식 아키텍처를 알아보겠습니다.
모놀리식 아키텍처란 1개의 Application에 여러기능이 통합되어 있는 구조입니다.
현재 Spring 프레임워크를 배우고 있는 분들이 하고있는 클론코딩이 모놀리식 아키텍처의 예입니다.
게시판 서비스를 만든다면 로그인,회원가입 서비스 & 게시글 작성 서비스 & 댓글 서비스등이 필요합니다.
위 서비스를 모두 1개의 프로젝트안에 통합해서 개발하는 것이 모놀리식 아키텍처를 사용한 개발입니다.
모놀리식 아키텍처의 장점)
1. 초기단계에서 설계가 간단합니다.
2. 코드의 관리가 간편합니다.
3.개발과정이 간단합니다.
위와 같은 장점은 모든 서비스가 통합되어 있어서 나타납니다.
하지만 서비스가 통합된 구조를 가지는 것으로 생기는 단점또한 있습니다.
모놀리식 아키텍처의 단점)
1. 특정 서비스의 수정을 하는 것이 다른 서비스에 영향을 끼칠 가능성이 높습니다.
2. 특정 서비스만 자원(서버의 수,크기)을 늘리는 것이 불가능합니다.
3. 특정 서비스의 에러가 발생할 경우 전체 서비스가 동작하지 않습니다.
MSA(마이크로 서비스 아키텍처)
모놀리식 아키텍처의 문제점을 보완한 것이 MSA 구조입니다.
MSA는 개별 기능을 하는 작은 서비스를 각각 개발해 연결해서 전체 Application이 동작하는 구조입니다.
이렇게 구현된 Application은 사용자의 요구에 따라 가용성을 즉각적으로 확보해야 하는 IaaS화경에 적합합니다.
MSA의 장점)
1. 특정 서비스의 수정을 하는 것이 다른 서비스에 영향을 끼칠 가능성이 낮습니다.
2. 특정 서비스만 자원(서버의 수,크기)을 늘리는 것이 가능합니다.
3. 개발된 서비스를 재사용하기 용이합니다.
MSA의 단점)
1. 초기단계의 개발,설계가 복잡합니다.
2. 각 서비스가 서로 통신하는 구조로 설계되기 때문에 네트워크를 통한 호출횟수가 증가해 성능에 영향을 줍니다.
MSA의 구조도
위 그림이 모놀리식 아키텍처와 MSA의 구조도입니다.
MSA구조도를 보면 각각의 작은 단위의 서비스가 서로를 호출하며 전체 서비스가 동작하며
각 서비스마다 최적의 DB를 가져서 성능이 높아집니다.
'k8s & Docker' 카테고리의 다른 글
k8s에서 Object (0) | 2024.01.19 |
---|---|
Docker - Container생성 (1) | 2024.01.18 |
Worker Node & PoD생성 과정 (0) | 2024.01.17 |
Kubernetes Cluster 구성 요소 - Master Node (0) | 2024.01.14 |
컨테이너 인프라 환경의 구성 요소 (0) | 2024.01.11 |