공부62 Devops Day 43 (5.4) 마이크로서비스_도메인 주도 설계 실습 Sprint 이벤트 스토밍 이벤트 스토밍의 목적은 팀 전체가 도메인 지식을 공유를 통해 프로젝트의 방향성을 얼라인(align)시키는 것에 있습니다. 이 과정에는 프론트엔드 개발자, 백엔드 개발자, 데브옵스 개발자, 인프라 엔지니어 등의 소프트웨어 관련 담당자만 참여하는 것이 아닙니다. 일반적으로는 모두가 모여있는 공간에서 큰 화이트보드나 벽에 포스트잇을 자유롭게 붙이는 방식으로 실행되는데, 온라인 환경에서는 miro와 같은 툴을 이용해서 비슷한 효과를 기대할 수 있습니다. https://miro.com/ 도메인 주도설계의 주요 용어 1. 도메인 이벤트: 발생한 사건 2. 커맨드: 도메인 이벤트를 트리거하는 명령 3. 외부 시스템: 도메인 이벤트가 호출하거나 관계가 있는 레거시 또는 외부 시스템 4. 액터: 개인 또는.. 2023. 5. 5. Devops Day 43 (5.4) 마이크로서비스_도메인 주도 설계와 모놀리식 분해 전략 도메인 지식 : 어떤 산업 또는 분야를 이해하기 위해 필요한 지식 도메인 : 개발 분야에서는, 소프트웨어로 해결하려는 문제의 영역을 의미 도메인을 표현하는 대표적인 사례 : 객체 지향 프로그래밍 (온라인 서점의 예) 도메인 모델 (예시) - 어떤 도메인을 개념적으로 표현하는 방법 (객체지향 설계, ERD 등) 도메인 주도 설계 (Domain Driven Design) - 하나의 도메인 모델에 대한 이해관계가 각자 다름을 인정하고, 각 팀에 적합한 하위 도메인을 설정하고 해당 하위 도메인에 대한 맥락을 알고 있는 사람이 따라야 할 비즈니스 규칙에 대한 경계를 설정하는 설계 방식 배달의 민족의 Order 도메인 (주문이란 무엇인가?) Order 클래스 분해 전략 도메인 주도 설계의 주요 용어 보편 언어 (u.. 2023. 5. 5. Devops Day 42 (5.3) 마이크로서비스_마이크로서비스 구조와 특징 마이크로서비스 아키텍처의 정의 - 유지보수에 유리하고, 테스트 가능해야 함 - 느슨하게 결합되어야 함 - 독립적으로 배포 가능함 - 비즈니스 역량을 중심으로 구성해야 함 - 작은 팀에 의해 소유됨 서비스로서의 컴포넌트화 - 컴포넌트: 독립적으로 대체하거나 업그레이드 가능한 소프트웨어 단위 - 컴포넌트화: 시스템을 구성 요소(Component)를 나누고 이를 연결하여 구축하는 것 - 컴포넌트화는 어떻게?: 소프트웨어를 여러 서비스로 분리하는 것 라이브러리 vs 서비스 Monolithic vs microservices : - Monolithic : 모든 기능을 하나의 프로세스로 만들고 여려 개의 서버로 구성됨 - Microservices : 각자의 기능을 각 서비스로 구성하고 다양한 서버로 배포 마이크로서비.. 2023. 5. 4. DevOps Day 35 (4.24) 배포 자동화 배포 자동화 배포 자동화란 한 번의 클릭 혹은 명령어 입력을 통해 전체 배포 과정을 자동으로 진행하는 것을 뜻합니다. 배포 자동화가 필요한 이유? - 먼저 수동적이고 반복적인 배포 과정을 자동화함으로써 시간이 절약됩니다. - 휴먼 에러(Human Error)를 방지할 수 있습니다. 여기서 휴먼 에러란 사람이 수동적으로 배포 과정을 진행하는 중에 생기는 실수를 뜻합니다. 그전에 했던 배포 과정과 비교하여 특정 과정을 생략하거나 다르게 진행하여 오류가 발생하는 것이 휴먼 에러의 예로 볼 수 있습니다. 배포 자동화 파이프라인 배포에서 파이프라인(Pipeline)이란 용어는 소스 코드의 관리부터 실제 서비스로의 배포 과정을 연결하는 구조를 뜻합니다. 1. Source 단계: Source 단계에서는 원격 저장소에.. 2023. 4. 25. DevOps Day 34 (4.21) 지속적 통합_릴리스 준비 환경 변수 운영체제 혹은 소프트웨어가, 각기 다른 컴퓨터 또는 사용자마다 별도로 가질 수 있는 고유한 정보를 담는 데 사용하는 변수를 특별히 환경 변수라고 합니다. 환경 변수는 왜 필요한가? 배포되는 기능마다 설정이 달라질 수 있기 때문입니다. - 새로운 배포마다, 새로운 기능들을 배포하게 됨으로써 설정값이 바뀌게 됩니다. - 따라서 코드의 버전을 관리하는 것처럼 설정값의 버전을 관리할 필요가 있습니다. Q. 설정은 왜 환경변수를 통하여 분리해야 할까요? - 환경 변수는 코드 변경 없이 배포 때마다 쉽게 변경할 수 있습니다. - 설정 파일과 달리, 잘못해서 코드 저장소에 올라갈 가능성도 적습니다. - 다른 설정 메커니즘과 달리 언어나 OS에 의존하지 않습니다. - 설정을 환경 변수를 통해 분리해야 하는 .. 2023. 4. 21. DevOps Day 33 (4.20) 지속적 통합_테스트 테스트 테스트 주도 개발 (Test Driven Deployment, TDD) : - 테스트 주도 개발이란 테스트가 기능의 디자인을 주도하는 반복적인 개발 방법론을 뜻합니다. 기존의 개발 과정 : 기존의 개발 프로세스는 아래와 같습니다 : 1. 요구사항 분석 2. 요구 사항을 토대로 디자인(설계)을 진행 3. 설계에 맞추어 기능을 개발. 4. 구현 완료 후 수동으로 기능을 테스트 5. 원하는 대로 동작하지 않거나 문제가 발생하면 디버깅을 통해 원인을 파악하고 수정 6. 3 - 4의 과정을 개발이 완료될 때까지 반복 테스트 프로세스 : 1. 요구사항 분석 2. 요구 사항을 토대로 디자인(설계)을 진행 3. 설계를 기반으로 기능 테스트 진행 - 실패 시 다시 설계 4. 테스트가 성공했다면 개발 진행 5. 3.. 2023. 4. 20. 이전 1 2 3 4 5 6 7 ··· 11 다음