wasup

Network) 모놀리식 아키텍처, 마이크로 서비스 아키텍처, 컨테이너, 도커, 쿠버네티스, 데브옵스, 노옵스 본문

IT/Network

Network) 모놀리식 아키텍처, 마이크로 서비스 아키텍처, 컨테이너, 도커, 쿠버네티스, 데브옵스, 노옵스

wasupup 2021. 8. 9. 11:26
반응형

도커와 마이크로서비스 등장 배경

: Monolithic Architecture

: MSA(Micro Service Architecture)

: Container, Docker, Kubernetes

모놀리식 아키텍처

: 하나의 애플리케니션이라 비교적 간단히 배포할 수 있는 모놀리식 아키텍처는 로드밸런싱을 할 때 불필요한 서비스까지 모두 이중화해야하며 라이브러리 종속성 문제로 관리하기 어렵고 수정사항이 있을 시 전체빌드, 배포를 해야하므로 비효율적이라는 문제가 있다.

마이크로 서비스 아키텍처

: 모놀리식 아키텍처와 반대되는 개념으로 애플리케이션을 분리하여 개발, 관리 가능하다.

: 모놀리식 아키텍처의 단점을 보완했으나 시스템이 분산되어 있기 때문에 트랜잭션, 테스트, 배포를 관리해야해서 복잡성이 증가했다.

컨테이너, 도커, 쿠버네티스

: 마이크로 서비스 아키텍처의 관리 복잡성을 해결하기 위해 등장

: 컨테이너 - 환경 격리 역할

: 도커 - 컨테이너를 관리하는 역할

: 쿠버네티스 - 다양한 도커를 관리

 


컨테이너

: 가상머신을 사용해 각 마이크로 서비스를 격리(isolate)하는 기술

: 가상머신처럼 하드웨어를 전부 구현하지 않음

: 프로세스의 문제가 발생할 경우 컨테이너 전체를 조정해야함

: 컨테이너에 하나의 프로세스를 실행하는것이 좋음.


도커

: Docker

: 컨테이너 기술을 지원하는 다양한 프로젝트 중 하나

: 다양한 운영체제에서 사용 가능( 리눅스, 윈도우 맥 )

: Linux 컨테이너를 만들고 사용할 수 있도록 하는 컨테이너화 기술

: Docker기술은 Linux커널과 함께 네임스페이스와같은 커널의 기능을 사용해 프로세스를 분리하여 독립적으로 실행된다.

: Docker기술은 LXC기술을 기반으로 구축됨

: 구축 이후에는 종속 관계를 벗어났으므로 Docker기술과 Linux컨테이너는 동일하지 않음.

LXC

: LinuX Containers

: 단일 Host상에서 여러 개의 고립된 리눅스 시스템(컨테이너)들을 실행하기 위한 운영 시스템 가상화 방법

도커, 이미지(Image)

: 컨테이너 실행에 필요한 파일과 설정 값을 포함

: 컨테이너는 이미지를 실행한 상태.

: 추가, 변경되는 값들은 컨테이너에 저장

: 같은 이미지에서 여러 개의 컨테이너 생성이 가능

: 컨테이너가 삭제되어도 이미지는 그대로 남음.

도커의 한계

: 서비스가 커지면 커질수록 관리해야 하는 컨테이너의 양이 급격히 증가한다.


쿠버네티스

: Kubernetes, 큐브(kube), 항해사라는 의미를 가짐.

: 2014년 구글이 컨테이너 운영 노하우가 담긴 오픈소스를 공개

: 다수의 컨테이너를 자동으로 운영하기 위한 오케스트레이션 도구. : 컨테이너화된 워크로드와 서비스를 관리하기 위한 오픈소스 플랫폼. : Linux 컨테이너 작업을 자동화하는 오픈소스 플랫폼.

*오케스트레이션 : 컴퓨터 시스템 및 소프트웨어의 자동화 된 구성, 조정 및 관리

*워크로드 : 쿠버네티스에서 구동되는 애플리케이션.

: 컨테이너화된 애플리케이션을 배포, 확장하는 수동 프로세스가 필요하지 않음.

: 클라우드를 위한 애플리케이션 개발을 최적화하는경우, 큐브를 통해 물리 또는 가상머신의 클러스트에서 컨테이너를 예약하고 실행할 수 있는 플랫폼이 확보됨.


컴퓨터 클러스터

: 여러 대의 컴퓨터들이 연결되어 하나의 시스템처럼 동작하는 것

 

서버 클러스터

: 각기 다른 서버들을 하나로 묶어 하나의 시스템같이 동작하게 하여 고가용성의 서비스를 제공하는 것.

 

쿠버네티스 클러스터

: 컨테이너화된 애플리케이션을 실행하기 위한 일련의 노드 머신.

: 개발, 테스트, 프로덕션 등을 위해 환경 전반에 분산된 멀티플 클러스터를 보유할 수 있으므로 이 클러스터를 효율적으로 관리할할 수 있어야함.


컨트롤 플레인 : 쿠버네티스 노드를 제어하는 프로세스 컬렉션

노드 : 컨트롤 플레인에서 할당된 요청 태스크를 수행하는 머신

포드 : 단일 노드에 배포되는 하나 이상의 컨테이너 집합, 가장 작은 쿠버네티스 오브젝트

서비스 : 일련의 포드에서 네트워크 서비스로 실행 중인 애플리케이션을 노출하는 방식

볼륨 : 포드의 컨테이너에 엑세스할 수 있는 데이터가 포함된 디렉토리

네임스페이스 : 가상 클러스터


데브옵스(DevOps)

: 소프트웨어 개발(Development)과 IT운영(Operations)을 결합한 합성어

: 개발담당자와 운영담당자가 연계하여 협력하는 개발 방법론.

: 서로의 업무에 대해 이해하여 좀 더 신속한 서비스 수행 가능.

: 개발자는 유저가 무엇을 원하는지 인지, 운영자는 애플리케이션을 제공하는데 해결할 문제를 인지

: 컨테이너와 마이크로서비스를 사용하면 더 자주 빠른 릴리즈가 가능

: 릴리즈(release)가 편해지므로 안정성과 협업 강화

* release : 소프트웨어 배포 생명 주기에서 컴퓨터 소프트웨어의 배포를 의미함.

 

데브옵스의 이점

: 속도 - 작업속도 향상으로 변화에 더 잘 적응하고 효율적인 비즈니스 성과를 창출: 신속한 제공 - 새로운 기능의 릴리즈와 수정 속도가 향상: 안정성 - 지속정 통합, 전달 방식으로 변경 사항이 안전히 작동하는지 테스트 가능.: 확장 가능 - 인프라와 개발 프로세스 운영, 관리.: 협업 강화 - 효과적인 팀 구축: 보안 - 자동화된 규정 준ㄴ수, 세분화된 제어 및 구성 관리 기술 사용.


노옵스(NoOps)

: 하드웨어 인프라를 이해하지 않아도 개발자가 직업 애플리케이션 배포 가능

: 실행 중인 애플리케이션의 특성을 꼭 알아야 할 필요는 없음

: 서비스의 수입 발생 전까지 안정성보다 제춤의 가치를 증명하는데 가치를 두는 스타트업에서 많이 사용하는 전략.

: NoOps는 DevOps의 시작이라고 생각할 수 있음.


[출처]

https://jaimemin.tistory.com/1827

 

https://www.redhat.com/ko/topics/containers/what-is-docker

 

https://ko.wikipedia.org/wiki/LXC

 

https://www.redhat.com/ko/topics/containers/what-is-kubernetes

 

 

https://ko.wikipedia.org/wiki/%EC%BB%B4%ED%93%A8%ED%84%B0_%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0

 

https://www.redhat.com/ko/topics/containers/what-is-a-kubernetes-cluster

 

https://www.whatap.io/ko/blog/4/

 

 

반응형
Comments