서비스

컨테이너 API의 종류와 개요 컨테이너 API란 컨테이너를 블랙박스처럼 다룰 수 있게 해주는 인터페이스이다. 소프트웨어에서는 서로 다른 팀이 개발한 프로그램들을 연결하기 위해 서로 지켜야 하는 규격을 인터페이스라 한다. 따라서 API는 대상이 되는 프로그램을 블랙박스로 취급하여 다른 프로그램에서 호출할 수 있게 해준다. 이는 쿠버네티스 환경에서도 사용된다. 컨테이너 API는 몇 가지 종류가 있으며, 각각의 목적과 사용법이 다르다. 모든 API를 필수적으로 알고 구현해야 되는 것은 아니다. 애플리케이션의 특성에 맞게 적절한 API를 선택하여 구현하면 된다. 컨테이너 기동 컨테이너 내의 애플리케이션은 기동 시에 환경 변수나 실행 인자를 읽어서 그에 맞게 동작하게 만들 수 있다. 헬스 체크(쿠버네티스 환경) ..
서비스란? 쿠버네티스의 서비스는 클라이언트의 요청을 파드에 전달하는 역활을 담당한다. 이러한 서비스가 필요한 이유는 파드의 IP 주소가 기동할 때마다 바뀌기 때문이다. 그래서 파드에 접속해야하는 클라이언트는 서비스가 가지는 대표 IP를 사용해서 접속해야 한다. 서비스는 로드밸런서의 역활을 가지며, 클라이언트의 요청을 받기 위한 대표 IP 주소를 획득한다. 서비스의 이름은 내부 DNS에 등록되기 때문에 클라이언트는 서비스의 이름만으로 서비스의 IP 주소를 획득할 수 있다. 서비스는 실렉터(selector)에 지정된 라벨과 일치하는 파드 중 하나에게 요청을 전달한다. 더보기 파드는 기동될 때 라벨이나 IP 주소를 포함한 자신의 오브젝트 정보를 마스터 노드의 etcd에 등록한다. 그래서 서비스의 전송처를 결정..
파드란? 파드는 쿠버네티스에서 컨테이너를 실행하는 최소 단위로 한개 혹은 여러 개의 컨테이너를 포함한다. 하나의 파드에 속하는 모든 컨테이너들은 같은 노드에서 동작한다. 파드는 다음과 같은 특징을 가진다. 컨테이너 재사용 촉진을 위한 플랫폼 파드는 하나의 목적을 위해 만들어진 컨테이너를 부품처럼 조합할 수 있도록 설계되었다. 파드 내부의 컨테이너들은 파드의 IP 주소와 포트번호를 공유한다. 파드의 내부 컨테이너들은 localhost로 서로 통신할 수 있다. 파드의 내부 컨테이너들은 System V 프로세스 통신이나 POSIX 공유 메모리를 사용하여 서로 통신할 수 있다. 파드의 내부 컨테이너들은 파드의 볼륨을 마운트하여 파일 시스템을 공유할 수 있다. 이 기능들은 같은 파드 내의 컨테이너 사이에서만 가능..
쿠버네티스 API란? 쿠버네티스의 대한 조작은 모두 API를 통해 이뤄진다. 커맨드 라인 유저 인터페이스인 kubectl은 마스터 노드상의 kube-apiserver에게 쿠버네티스 API 규약에 맞게 기술된 목표 상태 선언서인 매니페스트를 YAML 형식 혹은 JSON 형식으로 전송하여 오브젝트를 만들고, 바꾸고, 제거하는 일을 한다. 이 API 규약은 새로운 버전이 공개될 떄마다 추가나 변경된 점이 반영된 API 래퍼런스가 공개된다. 오브젝트란? 쿠버네티스 오브젝트란 클러스터 내부의 엔티티로서, 이후 설명할 파드, 컨트롤러, 서비스 등의 인스턴스를 의미한다. 각각의 오브젝트는 쿠버네티스 API의 리소스 종류에 맞게 설정되고 생성된다. 오브젝트는 지정된 상태가 유지되도록 쿠버네티스에 의해 제어된다. 각 오..
· DDD
네 개의 영역 표현(UI) 영역 사용자의 요청을 받아 응용 영역에 전달 응용 역영의 처리 결과를 다시 사용자에게 보여주는 역활 응용(Application) 영역 시스템이 사용자에게 제공해야 할 기능을 구현 예를들어 주문등록, 주문취소, 상품상세조회 등등 기능을 구현하기 위해 도메인 영역의 도메인 모델을 사용한다. 로직을 직접 수행하지 보다는 도메인 모델에 로직 수행을 위임한다. 도메인(Domain) 영역 도메인의 핵심 로직을 구현한다. 예를들어 주문 도메인인 경우 배송지 변경, 결제완료, 주문총액계산 등등 인프라스트럭처(Infrastructure) 영역 구현 기술에 대한 것을 다룬다. RDBMS 연동을 처리하고, 메시징 큐에 메시지를 전송하거나 수신하는 기능을 구현 HBase, 몽고DB등을 사용하여 데이..
· DDD
여러 애그리거트가 필요한 기능 도메인 영역의 코드를 작성하다 보면 한 애그리거트로 기능을 구현할 수 없을 때가 있다. 여러 애그리거트로 로직을 구현하게 되면 어떤 애그리거트가 주체인지 애매하다. 만약 한 애그리거트가 주체로 구현할 경우 해당 애그리거트는 책임 범위를 넘어서는 기능을 구현하기 때문에 코드가 길어지고 외부에 대한 의존이 높아지게 된다. 게다가 애그리거트의 범위를 넘어서는 도메인 개념이 애그리거트에 숨어들어서 명시적으로 드러나지 않게 된다. 이런 문제를 해소하기 위해 도메인 서비스를 별도로 구현한다. 도메인 서비스란? 한 애그리거트에 넣기 애매한 도메인 개념을 구현하려면 애그리거트에 억지로 넣기보다는 도메인 서비스를 이용하여 도메인 개념을 명시적으로 드러내면 된다. 도메인 서비스는 상태가 없이..
· MSA
Eureka란? Middle-tier server(비지니스 로직이 위치한 애플리케이션 서버단)의 로드밸런스와 Failover를 위해 서비스를 배치해주는 REST 기반 서비스 주로 AWS Cloud에서 사용된다. Eureka Client Java 기반 클라이언트 요소도 있는데, 서버와 상호작용을 더 쉽게 해주는 것을 Eureka Client라 부른다. Ribbon - Client LoadBalancer 방식을 기본으로 사용하는 로드밸런서를 내장하고 있다. Netflix에서는 Eureka에서 기본 로드 밸런스 외에도 트래픽, 리소스 사용량, 에러 상황 요소에 따라 로드밸런스를 할 수 있도록 제공하고 있다. Eureka Server의 필요성 AWS Cloud에서는 특성상 서버가 자주 꺼졌다 켜졌다 한다. IP..
beekei
'서비스' 태그의 글 목록