[Clean Architecture 정리] 27장. '크고 작은 모든' 서비스들
·
IT/architecture
서비스 지향 아키텍처(SOA)와 마이크로서비스아키텍처(MSA)는 최근에 큰 인기를 끌고 있는 이유는 다음과 같다.서비스를 사용하면 상호 결합이 철저하게 분리되는 것처럼 보인다.서비스를 사용하면 개발과 배포 독립성을 지원하는 것처럼 보인다.나중에 보겠지만, 이 역시도 일부만 맞는 말이다SOA: 기존 애플리케이션들의 기능을 비즈니스적인 의미가 있는 기능 단위로 묶고, 표준화된 호출 인터페이스를 통해 서비스라는 소프트웨어 컴포넌트 단위로 재조합한 후, 이 서비스들을 서로 조합하여 업무 기능을 구현한 애플리케이션을 만들어내는 소프트웨어 아키텍처MSA: 여러 개의 작은 서비스로 구성되어 각 서비스가 독립적으로 개발되고 배포되는 구조SOA와 마이크로서비스의 차이점 자세히서비스 아키텍처?서비스를 사용한다는 것은 본질..
[Clean Architecture 정리] 26장. 메인(Main) 컴포넌트
·
IT/architecture
들어가며모든 시스템에는 최소 하나의 컴포넌트가 존재함.이 컴포넌트가 나머진 컴포넌트를 생성, 조정, 관리함.저자는 이 컴포넌트를 메인(Main)이라고 부름.궁극적인 세부사항메인 컴포넌트는 궁국적인 세부사항으로 가장 낮은 수준의 정책임.메인은 팩토리, 전략, 시스템 전반에 필요한 객체들을 생성하고 더 높은 수준에 정책에 제어권을 넘긴다.메인은 클린 아키텍처에서 가장 바깥 원에 위치하는 지저분한 저수준 모듈임.메인은 고수준의 시스템을 위한 모든것을 로드한 후 제어권을 고수준의 시스템에게 넘김.→ 예를들면 책에 내용중인 움퍼스 게임에서도 main 함수에서 게임의 메인 루프, 입력 명령어 해석을 처리하지만 명령어의 실제 처리는 다른 고수준 컴포넌트로 위임시킴.아래 예제 코드는 최신 움퍼스 사냥 게임(Hunt t..
[Clean Architecture 정리] 23장. 프레젠터와 험블 객체
·
IT/architecture
험블 객체 패턴테스트하기 어려운 행위와 테스트하기 쉬운 행위를 분리하기 쉽게 하는 목적으로 고안행위를 두개의 모듈이나 클래스로 나눈다. 이들 모듈 중 하나가 험블이다.가장 기본적인 본질은 남기고, 테스트 하기 어려운 행위를 모두 험블 객체로 옮긴다.GUI의 경우 화면을 보며 요소들이 필요한 위치에 표시되었는지 단위 테스트가 어려움.하지만 GUI에서 수행되는 행위는 쉽게 테스트가능.이 부류의 행위를 험블 객체 패턴을 사용하면 프레젠터와 뷰로 나눌 수 있음.프레젠터와 뷰뷰는 험블객체이고 테스트하기 어렵다.뷰는 데이터를 GUI로 이동시키지만, 데이터를 직접 처리하지 않는다.프레젠터는 테스트하기 쉬운 객체다.프레젠터의 역할은 애플리케이션(server)으로부터 데이터를 받아 화면에 표현할 수 있는 포맷으로 만드는..
[Clean Architecture 정리] 22장. 클린 아키텍처
·
IT/architecture
험블 객체 패턴테스트하기 어려운 행위와 테스트하기 쉬운 행위를 분리하기 쉽게 하는 목적으로 고안행위를 두개의 모듈이나 클래스로 나눈다. 이들 모듈 중 하나가 험블이다.가장 기본적인 본질은 남기고, 테스트 하기 어려운 행위를 모두 험블 객체로 옮긴다.GUI의 경우 화면을 보며 요소들이 필요한 위치에 표시되었는지 단위 테스트가 어려움.하지만 GUI에서 수행되는 행위는 쉽게 테스트가능.이 부류의 행위를 험블 객체 패턴을 사용하면 프레젠터와 뷰로 나눌 수 있음.프레젠터와 뷰뷰는 험블객체이고 테스트하기 어렵다.뷰는 데이터를 GUI로 이동시키지만, 데이터를 직접 처리하지 않는다.프레젠터는 테스트하기 쉬운 객체다.프레젠터의 역할은 애플리케이션(server)으로부터 데이터를 받아 화면에 표현할 수 있는 포맷으로 만드는..
[Clean Architecture 정리] 21장. 소리치는 아키텍처
·
IT/architecture
소리치는 아키텍처건물의 청사진을 살펴보고 있다고 상상해보자. 아키텍트가 작성한 건물에 대한 일련의 계획을 보여주고 있다. 계획서가 사람이 거주 할 주택이라면 정문, 거실로 연결되는 현관, 그리고 부엌 가족방 등이 있을 가능성이 높다. 이러한 계획서를 보면 이건 한 가족이 사는 주택이라는 느낌을 받을 것이다. 다시 말해, 아키텍처가 난 집이야!!라고 소리칠 것이다.자, 여러분의 애플리케이션 아키텍처는 뭐라고 소리치는가? 상위 수준의 디렉터리 구조, 최상위 패키지에 담긴 소스 파일을 볼 때, 이 아키텍처는 "헬스케어 시스템이야!", "재고 관리 시스템이야!"라고 소리치는가??아니면 "스프링이야!", "ASP야!!"라고 소리치는가??- 의도를 우리에게 소리치는 아키텍처아키텍처의 테마이바 야콥슨(Ivar Jac..
[Clean Architecture 정리] 20장. 업무 규칙
·
IT/architecture
20장 업무 규칙업무 규칙(Business Rules)은 사업적으로 수익을 얻거나 비용을 줄일 수 있는 규칙 또는 절차다.  더 엄밀하게 말하면 컴퓨터 상으로 구현했는지와 상관없이, 업무 규칙은 사업적으로 수익을 얻거나 비용을 줄일 수 있어야 한다. 심지어 사람이 수동으로 직접 수행하더라도 마찬가지다. 예를 들어, 대출에 N%의 이자를 부과한다는 사실은 은행이 돈을 버는 업무 규칙으로, 프로그램으로 이자를 계산하든 사람이 계산하든 상관없는 파트입니다.핵심 업무 규칙사업 자체에 핵심적이며, 규칙을 자동화하는 시스템이 없더라도 그대로 존재하는 규칙이다.핵심 업무 데이터( 대출 잔액, 이자율, 지급 일정) 핵심 업무 규칙이 요구하는 데이터. 시스템으로 자동화되지 않은 경우에도 존재하는 데이터이다.엔티티핵심 업..
[Clean Architecture 정리] 15장. 아키텍처
·
IT/architecture
15장 아키텍처란?아키텍처• 시스템을 구축하는 사람들이 만들어낸 시스템 형태• 컴포넌트 분활, 컴포넌트 배치, 컴포넌트 의사소통 방식에 따라 정해진다.• 아키텍처 주된 목적: 시스템 생명주기 지원(개발, 배포, 운영, 유지보수)• 동작(운영) 보다 배포, 유지보수, 계속되는 개발 과정에서 어려움을 겪는다.소프트웨어 아키텍트• 프로그래머(발생하는 문제를 경험해보지 않으면 다른 프로그래머를 지원하는 작업을 제대로 수행할 수 없다) + 팀원들의 생산성을 극대화할 수 있는 설계개발시스템 아키텍처는 개발팀이 시스템을 쉽게 개발할 수 있는 구조여야 한다. (수명↑ 건강 ↑)팀 구조가 다르다면 아키텍처 관련 결정에도 차이팀 구조가 작을 때 : 개발자 다섯명이, 모노리틱 시스템팀 구조가 클 때 : 일곱 명씩 구성된 총..
Jenkins을 이용하여 Docker Image를 ECR로 올리기 with Github, 퍼블릭 서브넷
·
IT/cloud
Docker in Docker (DinD) 방식으로 AWS ECR 활용하기DockerAgent 준비물Docker in Docker(DinD) 방식으로 에이전트를 실행하고 컨테이너를 동적으로 관리하기 위해 아래의 준비물이 필요합니다. 필수 준비물AWS Access KeyAWS IAM 권한AmazonEC2ContainerRegistryPowerUser 권한을 가진 IAM 사용자 생성AWS ECR (Elastic Container Registry) AWS ECR(Elastic Container Registry)에 repository 생성하기ECR (EC2 Container Registry)은 Docker Container의 이미지를 저장하는 Repository 서비스IAM 인증을 통해 이미지의 push / p..
Jenkins + GitHub 프라이빗 서브넷 환경, CI 구축의 어려움
·
IT/cloud
Jenkins란?지속적 통합(CI)Polling 기법 혹은 Webhooks 방법으로 동작한다.- Webhooks: 이벤트 전달 , Polling: request 요청(10초에 한 번씩)젠키스 접속을 위한 aws 설정Jenkins에 접속하기 위해 ALB 필요가 필요하여 구축이 필요하다.1. 젠키스 ec2 생성2. 로드밸런서 구성dev-jenkins-albinternet-facing3. ALB의 DNS 주소로 접속1. 젠티스 ec2 생성보안 그룹 구성jenkins ec2 보안그룹(dev-jenkins-ec2) 인바인드 규칙2. 로드밸런서 구성대상그룹 생성대상은 인스턴스로 설정하고 젠킨스가 위치한 ec2를 선택해주었다.로드밸런서 생성을 누르고 ALB를 선택이렇게 설정해주고 아래에서도 vpc랑 public su..
[Ansible] lac를 통한 클라우드 인프라 구축-2
·
IT/cloud
플레이북 실행3가지 유형의 파일구성파일인벤토리 파일플레이북 파일구성파일구성파일: Ansible의 동작방법을 설정하는 파일기본위치 /etc/ansible/ansible.cfg기본적으로 구성 파일은 /etc/ansible/ansible.cfg에 위치하지만, 일반적으로 프로젝트별 작업 디렉토리를 생성해 해당 디렉토리에서 구성 파일을 관리합니다.기본 인벤토리 파일[defaults]inventory = ./inventoryremote_user = userask_pass = false[privilege_escalation]become = truebecome_method = sudobecome_user = rootbecome_ask_pass = false #기본값 다음은 각 행에 대한 설명입니다. (중요!!!!)[d..