service

서비스란? 쿠버네티스의 서비스는 클라이언트의 요청을 파드에 전달하는 역활을 담당한다. 이러한 서비스가 필요한 이유는 파드의 IP 주소가 기동할 때마다 바뀌기 때문이다. 그래서 파드에 접속해야하는 클라이언트는 서비스가 가지는 대표 IP를 사용해서 접속해야 한다. 서비스는 로드밸런서의 역활을 가지며, 클라이언트의 요청을 받기 위한 대표 IP 주소를 획득한다. 서비스의 이름은 내부 DNS에 등록되기 때문에 클라이언트는 서비스의 이름만으로 서비스의 IP 주소를 획득할 수 있다. 서비스는 실렉터(selector)에 지정된 라벨과 일치하는 파드 중 하나에게 요청을 전달한다. 더보기 파드는 기동될 때 라벨이나 IP 주소를 포함한 자신의 오브젝트 정보를 마스터 노드의 etcd에 등록한다. 그래서 서비스의 전송처를 결정..
· AWS
Simple Queue Service(SQS)란 ? 분산 시스템를 구성할때 시스템간 메세지를 주고 받을 수 있는 메세지 큐 SQS는 전송,수신,삭제 3가지 기능을 제공한다. SQS의 기본적인 아키텍처 Producer가 메시지 전송을 하면 Queue가 수신한다. 수신된 메시지를 Consumer가 전달받아 처리한다. Consumer에서 수신된 메시지를 처리완료하면 방금 수신받은 메시지를 삭제해달라는 요청을 날린다. 위와 같이 요청 받은 Server가 바로 성공 실패 여부를 알려줄 필요가 없을때 위와 같은 아키텍쳐로 서버를 구성할 수 있다. SQS Queue SQS서비스에는 2가지 종류의 Queue가 존재한다. Standard Queue(표준 대기열) 장점 초당 무제한에 가까운 TPS를 지원한다. 메시지 유실..
· DDD
여러 애그리거트가 필요한 기능 도메인 영역의 코드를 작성하다 보면 한 애그리거트로 기능을 구현할 수 없을 때가 있다. 여러 애그리거트로 로직을 구현하게 되면 어떤 애그리거트가 주체인지 애매하다. 만약 한 애그리거트가 주체로 구현할 경우 해당 애그리거트는 책임 범위를 넘어서는 기능을 구현하기 때문에 코드가 길어지고 외부에 대한 의존이 높아지게 된다. 게다가 애그리거트의 범위를 넘어서는 도메인 개념이 애그리거트에 숨어들어서 명시적으로 드러나지 않게 된다. 이런 문제를 해소하기 위해 도메인 서비스를 별도로 구현한다. 도메인 서비스란? 한 애그리거트에 넣기 애매한 도메인 개념을 구현하려면 애그리거트에 억지로 넣기보다는 도메인 서비스를 이용하여 도메인 개념을 명시적으로 드러내면 된다. 도메인 서비스는 상태가 없이..
· DDD
DIP(역전 의존 원칙)이란? 서비스가 특정 시스템에 의존성을 가지게 되면 서비스 자체만으로 테스트 수행이 어렵고 종속되는 시스템에 따라 서비스의 코드가 지속적으로 변경될 여지가 있다. 저수준 모델이 고수준 모델에 의존하도록 바꾸는 것 변경에 유연하고 테스트가 쉬움 핵심은 의존 관계를 맺을 때 변화하기 쉬운 것에 의존하기보다는, 변화하지 않는 것에 의존 해야한다. 예시 신용카드 클래스를 만든다고 했을때 신용카드에는 여러가지 종류에 은행이 있을것이다. class ShinhanCard { // 신한카드 public void pay() { // 결제 ... } public void pause() { // 카드정지 ... } } class HyunDaiCard { // 현대카드 public void pay() ..
beekei
'service' 태그의 글 목록