분류 전체보기 49

EC2 - 배치 그룹

클러스터인스턴스를 가용영역 안에 서로 근접하게 패팅한다. 전송 지연 수준이 낮으므로, 고성능 컴퓨팅 애플리케이션에 적합하다. 분산데이터 소실 및 서비스 실패와 같은 위험을 감소 시키기 위해, 다수의 AZ를 사용하고,서로 다른 하드웨어 랙에 인스턴스를 분산 배치한다. 파티션 인스턴스를 논리적 파티션으로 분산하여, 한 파티션에 있는 인스턴스 그룹이 다른 파티션의 인스턴스 그룹과 기본 하드웨어를 공유하지 않도록 한다.

EC2 기초

온프레미스 애플리케이션을 AWS로 이전하려 합니다. 여러분의 기업에는 애플리케이션을 전용 서버에서 실행해야 한다는 엄격한 규정이 있습니다. 또한 비용 절감을 위해 전용 서버 바운드 소프트웨어 라이선스를 사용해야 합니다. 이 경우, 다음 중 어떤 EC2 구매 옵션이 적합할까요?전환 가능 예약 인스턴스 컨버터블 예약 인스턴스전용 호스트스팟 인스턴스     전용 호스트 같은 경우, Ec2 인스턴스 용량을 사용자 전용으로 제공하는 물리적 서버이다. 다른 AWS 고객과 물리적으로 격리 된다. 이는, 특정 하드웨어에 적용해야 하는 라이선스가 있는 시나리오에 유용하다. 전용 인스턴스 같은 경우, 단일 고객 전용 하드웨어의 VPC에서 실행되는 인스턴스 이다. 다른 AWS 고객과 격리된 환경에서 처리 가능하지만, 특정 ..

1. 도메인 주도 설계

도메인 모델이란? 그레디 부치는 모델을 단순하게 표현한 실제 세계라고 표현한다. 소프트웨어에서 모델은 해결해야 하는 문제를 바라보는 다양한 관심사 중 하나를 선택해서 문제를 설명하는데 필요한 것만을 표현하는 것을 말한다. 이는 관심사의 분리라는 개념과도 연관이 되는데, 관심사의 분리는 구성 요소 관 관계를 정의하는 것으로 이를 통해, 높은 응집도와 구성 요소간 낮은 결합도를 만들어 유지보수에 도움이 된다.  1.1 도메인 로직 패턴도메인 로직을 어디에 두는 것이 좋을까란 질문에서 마틴 파울러는 애플리케이션 아키텍쳐 패턴에서 도메인 로직을 구현하는 방법을 네가지로 정리했다.  1.1.1 트랜잭션 스크립트 패턴트랜잭션 스크립트는 클라이언트가 요청한 비즈니스 로직을 하나의 프로시저가 모두 처리한다. 이는 반복..

메타 데이터 락

배경 메타 데이터락을 공부하던 도중, 의문점이 들었습니다 문제의 코드입니다. 다음의 코드는 access_log의 구조를 바꾸기 위해 access_log_new를 생성하여 access_log의 데이터를 옮기고, access_log_new를 다시 access_log 로 만드는 과정입니다. 궁금증 P166의 중반부에 있는 예제에서 '트랜젝션을 autocommit으로 실행(BEGIN 이나 START TRANSACTION으로 실행하면 안됨)' 라고 적혀있는데 왜 그럴까요? start commit 을 쓰면 안되는 이유가 있을까요? 공식문서에 따르면, 트랜젝션을 시작하게 되면(start transaction..등) 기존에 있었던 UNLOCK TABLE 이 수행됩니다. 이는, 코드를 보면 중간에 commit을 통해서 ..

테스트 더블이란 무엇인가

테스트 더블, 테스트 대역 모든 유형의 비운영용 가짜 의존성을 포괄하는 용어이다. 더미, 스텁, 스파이, 목, 페이크로 나눌 수 있다. 하지만 크게 보면 크게 목(목, 스파이)과 스텁(스텁, 더미, 페이크) 로 나눌 수 있다. 목 외부로 나가는 상호작용을 모방하고 검사. 목과 스파이 목 : 검증 기능을 제공한다. 스파이 : 기능적으로 목과 같다. SUT의 간접 출력을 제공하기 위한 대역이다. 스텁 내부로 들어오는 상호작용을 모방. 스텁, 더미, 페이크는 얼마나 똑똑한지에 따라 달라진다. 더미는 SUT를 구성하거나 테스트를 실행하는 데 필요하지만, 테스트 하려는 요구사항에는 전혀 영향을 주지 않는 대역이다. Stub은 SUT의 간접 입력을 제공하기 위한 대역이다. Fake는 실제로 동작하지만, 운영 환경에..

좋은 단위 테스트의 4대 요소

페어프로그래밍을 하면서 거짓 양성, 블랙 박스, 화이트 박스… 같은 용어들이 생소했다. 그래서 단위 테스트 책을 읽으면서 해당 관련 지식을 보충하게 되었다! 단위 테스트 책 4단원에 해당 지식이 나온다. 좋은 단위 테스트의 4가지 특성 회귀 방지 리팩터링 내성 빠른 피드백 유지 보수성 회귀 방지 회귀 = 소프트웨어 버그로, 코드 수정 후 기능이 의도한 대로 동작하지 않는 경우이다. 회귀 방지는 테스트가 얼마나 버그의 존재를 잘 나타낼 수 있는지 척도를 말한다. 회귀에는 다음과 같은 요소들이 영향을 미친다. 테스트 중에 실행되는 코드의 양 실행되는 코드가 많을 수록 회귀가 나타날 가능성 많다. 코드 복잡도,코드 도메인 유의성 복잡한 비즈니스 로직이 보일러 플레이트 코드보다 중요하다. 리팩터링 내성 테스트를..

CEQ, CQRS, ES 가 무엇일까?

회사에서 클래스 네임과 관련된 코드 리뷰를 받았는데, 클래스 명명에서도 고려해야 할 점이 있음을 알게 되었다. 이는 CQRS와 ES(event sourcing)에서 많이 쓰이는 패턴이다. 따라서 CQRS와 ES가 궁금해져서 간단히 찾아보았다. CQRS & ES Commands 명령은 수신자에게 어떤 작업을 수행하도록 지시하는 메시지이다. 명령의 작성자는 의도를 가지고 있으며 수신자의 응답을 기대한다. 시스템의 상태를 변경하므로, 두번 이상 처리되어서는 안된다. 명령의 생산자는 때로는 순서대로 처리 되기를 원한다. Events 과거에 일어난 일에 대한 사실을 전달한다. 어떤 행동으로 이어질 기대가 없다. producer는 대가로 어떤 응답도 기대하지 않는다. 발생한 일에 대한 알림만 전달하므로 가볍다. P..

그림으로 배우는 쿠버네티스 CH4 애플리케이션 노출

배포한 애플리케이션을 노출하는 방법 다음과 같은 방법이 있다. 간단한 방법 port-forward HostPort hostNetwork NodePort LoadBalancer ExternalName ClusterIP, Headless Endpoints Ingress 간단한 방법(port-forward, HostPort, hostNetwork) 포트 포워딩 호스트 PC에서 가상 머신으로 접속 시 포트 포워딩 사용 port-forward 옵션 k port-forward fwd-chk-hn 80:80: 마스터 노드의 80번 포트를 fwd-chk-hn 노드의 80번 포트로 포워딩 노드가 재시작 될 경우 포트 포워딩이 사라짐. 내부에서 포트를 포워딩할 때만 쓰지 영속적으로 쓸수는 없음 실습 마스터 노드 → 워커 ..

그림으로 배우는 쿠버네티스 CH3 애플리케이션 배포법

배포 형태는 오브젝트이다. 오브젝트는 파드, service, namespace, volumes 가 있는데, 그중 Pod와 파드와 관련된 오브젝트들을 알아본다. 애플리케이션으로 배포되는 오브젝트 형태 파드 (Pod) 디플로이먼트 (Deployment) 레플리카셋 (ReplicaSet) 잡(Job): 파드로 계속 떠있으면 부담이 되는 작업을 처리하기 위한 오브젝트 크론잡 (CronJob) : 잡을 주기적으로 실행할 수 있도록 하는 오브젝트 데몬셋 (DaemonSet) : 노드마다 1개씩만 올라가는 파드 (칼리코) 스테이트풀셋 (StatefulSet) : 순서를 지키면서 배포가 되고 상태를 가지고 있는 파드 기존의 Pod는 stateless이다. 파드(Pod) pod.yaml apiVersion: v1 #적합..

그림으로 배우는 쿠버네티스 CH2 쿠버네티스를 배우기 위한 사전 준비 작업

실습 버전 업그레이드 실습 버전을 1.2로 업시킨다. https://user-images.githubusercontent.com/52024566/156181043-6cdcf0af-7aaa-442d-b7a8-42c476fd442f.png 혼동되는 용어 정리 파드 컨테이너 애플리케이션 가 혼동되어 쓰인다. 파드나 컨테이너는 구조적인 단위, 구조, 형태에 대한 단위라고 한다면, 애플리케이션은 기능의 단위라고 할 수 있다. 즉 애플리케이션은 단일 컨테이너의 단위가 될 수도 있고, 복수의 컨테이너가 될 수도 있다. 또한 파드와 1 대1 맵핑될 수도 있고, 파드가 여러 개 모여서 동작하는 애플리케이션도 동작할 수 있다. 파드(Pod) : 쿠버네티스에서 생성하고 관리할 수 있는 배포 가능한 최소 컴퓨팅 단위 컨테이너..