아키텍처

쿠버네티스의 아키텍처 및 구성요소 쿠버네티스는 마스터와 노드로 구성된다. 쿠버네티스 클러스터를 구성하는 코어 프로세스(컨테이너) kubectl K8s 클러스터를 조작하기 위한 도구로 가장 비번하게 이용되는 커맨드 라인 인터페이스다. kube-apiserver kubectl 등의 API 클라이언트로부터 오는 REST 요청을 검증하고, API 오브젝트를 구성하고 상태를 보고한다. kube-scheduler 쿠버네티스의 기본 스케줄러이며, 새로 생성된 모든 파드에 대해 실행할 최적의 노드를 선택한다. 스케줄러는 파드가 실행 가능한 노드를 찾은 다음 점수를 계산하여 가장 높은 노드를 선택한다. kube-controller-manager 컨트롤러를 구동하는 마스터상의 컴포넌트 cloud-controller-man..
도커의 아키텍처 리눅스 커널이 제공하는 기능을 활용하면 도커가 아니라 자체적으로 컨테이너를 만드는 것도 가능하다. 그러나 직접 개발한 컨테이너는 커뮤니티가 개발한 컨테이너를 재상용하는 것이 어렵고 공유하기도 어렵다. 도커는 스프트웨어 개발자가 컨테이너를 이용해 개발 생산성을 높일 수 있도록 컨테이너를 Build(작성), Ship(이동), Run(실행)할 수 있는 기능을 지원한다. 이런한 기능을 제공하는 도커는 도커 데몬 서버와 클라이언트인 도커 커맨드, 그리고 이미지 보관소인 레지스트리로 구성된다. 1. 도커 데몬 도커 데몬은 클라이언트인 도커 커맨드의 명령을 받아들여서 도커 오브젝트인 이미지, 컨테이너, 볼륨, 네트워크 등을 관리한다. 그리고 네트워크 너머에 있는 원격 클라이언트로 부터 요청을 받는 것..
쿠버네티스를 위해 꼭 알아야 하는 도커 지식 애플리케이션을 개발할 때는 다양한 라이브러리를 사용하게 되는데, 이를 사용하게 되면 개발자가 직접 작성해야되는 코드가 줄고 단기간에 고품질의 애플리케이션을 개발할 수 있다. 그러나 오픈 소스 프로젝트는 빈번하게 버전 업 되며, 버그 수정, 보안 패치 등이 일어난다. 그 결과 애플리케이션을 빌드할 때마다 다른 라이브러리를 사용하게 될 가능성이 있고 라이브러리의 버전이 바뀌게 되면 호환성의 문제가 발생해 새로운 버그가 잠재될 수 있다. 즉, 개발 생산성이 좋아지는 대신에 안정성을 유지하기 어려워진다. 도커는 이러한 문제를 컨테이너를 통해 해결하여, 오픈 소스를 사용한 개발 생산성 향상과 애플리케이션 안전성 두 가지를 모두 가지고있다. 컨테이너화된 애플리케이션을 운..
도커와 쿠버네티스의 개요 쿠버네티스(Kubernetes)는 컨테이너화된 어플리케이션을 효율적으로 배포하고 운영하기 위해 설계된 오픈 소스이다. 따라서 쿠버네티스를 이해하기 위해서는 먼저 컨테이너를 사용하는 이유부터 알아야 한다. 애플리케이션이 생활 많은곳에 사용되고 중요성이 높아지고 있어 지속적 통합(CI)과 지속적 배포(CD)의 중요성이 점차 높아지고 있다. 사용자에게 새로운 기능과 서비스를 빠르고 안정적으로 제공해야 하는 것이다. 컨테이너 기술은 이러한 요구사항에 효과적인 대안을 제시한다. 개발자들은 서로 다른 개발환경으로 개발하기 때문에 개발 생산성과 안정성이 떨어지게 된다. 이러한 상황에서 컨테이너 기술이 빛을 발한다. 컨테이너 기술은 애플리케이션 실행에 필요한 라이브러리나 운영체제 패키지 등을 ..
· DDD
고객 / 공급자 관계를 갖는 BOUNDED CONTEXT 두 BOUNDED CONTEXT간 관계 중 가장 흔한 관계는 한쪽에서 API를 제공하고 다른 한쪽에서는 그 API를 호출하는 관계이다. 이 관계에서 API를 사용하는 BOUNDED CONTEXT는 API를 제공하는 BOUNDED CONTEXT에 의존하게 된다. 공개 호스트 서비스(OPEN HOST SERVICE) 공개 호스트 서비스의 대표적인 예는 검색이다. 블로그, 카페, 게시판과 같은 서비스를 제공하는 포탈은 각 서비스 별로 검색 기능을 구현하기 보다 검색을 위한 전용 시스템을 구축하고 검색 시스템과 각 서비스를 통합한다. 이때 상류 컴포넌트는 검색 시스템이고, 하류 컴포넌트는 블로그, 카페, 게시판이 된다. 상류 컴포넌트의 서비스는 상류 BO..
· DDD
의존성이란? 변경에 의한 영향을 받는 경향 B가 변경될때 A도 함께 변경 → A가 B에 의존하고있다. 클래스 의존성 Association (연관관계) class A { private B b; } Dependency(의존관계) class A { public B method(B b) { return new B(); } } Inheritance(상속관계) class A extends B { } Realization(실체화 관계) class A implements B { } 패키지 의존성 패키지에 포함된 클래스 사이의 의존성 예를들어 A패키지에서 클래스에서 B패키지에 있는 클래스에 의존성이 있다면 패키지 의존성이 존재한다. 좋은 의존성은? 1. 양방향 의존성을 피하라! Bi-Directional(양방향) A가 ..
· MSA
MSA란? Microservice Architecture의 약자로 "하나의 큰 어플리케이션을 여러개의 작은 어플리케이션으로 쪼개어 변경과 조합이 가능하게 만든 아키텍쳐"라고 할 수 있다. 서비스간 느슨한 결합(Loose Coupling)과 높은 응집성(High Cohesion)을 지향 애플리케이션 기능을 분해하고 분리해서 완전히 상호 독립적이여야 한다. MSA를 왜 사용하는가? 기존에 많은 애플리케이션들은 Monolithic Architecture로 구현되어 있는데, 프로젝트 규모가 커지고 복잡도가 늘어날 수록 관리와 서비스 파악이 어렵고 단일 코드로 구축하기 때문에 배포도 모든 팀이 같이 해야한다. 이러한 단점을 개선하기 위해 Microservice Architecture를 사용한다. Microserv..
beekei
'아키텍처' 태그의 글 목록