본문 바로가기

전체 글64

모놀리스 아키텍처 vs. 마이크로서비스 아키텍처 1. 배포 방식모놀리스 아키텍처: 모든 기능(계산, 복사, 할 일 등)이 하나의 코드베이스와 배포 단위로 함께 관리됨. 하나의 기능이 변경되면 전체 애플리케이션을 재배포해야 함.마이크로서비스 아키텍처: 각 기능이 독립적인 서비스로 분리되어 개별적으로 배포 가능. 기능마다 독립적인 확장이 가능해 특정 기능만 업데이트하거나 배포할 수 있음.2. 확장성모놀리스 아키텍처: 특정 기능(예: 계산)을 확장하려면 애플리케이션 전체를 확장해야 하므로 리소스 낭비가 발생할 수 있음.마이크로서비스 아키텍처: 필요한 기능만 개별적으로 확장 가능. 예를 들어 계산 서비스만 여러 인스턴스로 확장해 리소스를 효율적으로 사용할 수 있음.3. 데이터베이스 관리모놀리스 아키텍처: 모든 기능이 동일한 데이터베이스를 공유함. 예를 들어 .. 2024. 10. 6.
클라우드 네이티브 마이크로서비스 (Cloud Native Microservices) 클라우드 네이티브 마이크로서비스: 마이크로서비스를 사용하는 클라우드 네이티브 디자인 마이크로서비스: 비즈니스 도메인을 중심으로 한 단일 용도의 소규모 서비스. REST API와 같은 네트워크 통신방법으로 연결됨. 클라우드 네이티브: 클라우드가 제공하는 수평적 확장성을 활용하여 클라우드에서 탄생한다.  Twelve-Factor App 지침을 따름: 애플리케이션은 스테이트리스 마이크로서비스의 모음으로 설계된다* 스테이트리스(stateless) : 애플리케이션에 상태가 없음 (X), 서비스가 숨겨진 상태를 유지하지 않는다. (O) 상태는 데이터베이스에서 지속되며, 각 서비스는 별도의 데이터베이스 또는 영구 오브젝트 저장소에서 자체 상태를 유지한다. 다중 인스턴스 배포를 통한 복원력, 수평적 확장 * 애플리케이.. 2024. 10. 6.
행동 주도 개발(BDD, Behavior-Driven Development) feat.TDD [행동 주도 개발]외부에서 내부적으로 관찰되는 시스템의 동작에 초점을 맞춤 모든 구성 요소가 함께 작동하는지 확인하기 위한 통합 테스트에 적합비즈니스 성과에 가장 직접적으로 기여하는 행동만 구현 누구나 이해할 수 있는 단일 표기법(Gherkin 언어를 사용)으로 행동 설명 -> 커뮤니케이션 향상Gherkin 구문으로 사용자 행동 스토리의 기준을 정의 -> 스프린트의 "완료" 기준이 명확해짐 ( 코드만으론 할 수 없는 스토리 ) [BDD와 TDD]- BDD: 외부에서 시스템 동작을 설명. 시스템을 소비자로 생각. 모든 구성 요소가 더 높은 수준에서 함께 작동하도록 하는 동안 각 구성 요소가 제대로 작동하는지 확인 즉, 올바른 것을 구축하고 있는지 확인하는 것 BDD ensures that you are b.. 2024. 10. 6.
테스트 주도 개발(TDD, Test-Driven Development) 테스트 주도 개발테스트 케이스가 코드의 설계 및 개발을 주도함시스템 내부 작동 박식의 세부사항에 초점을 맞춤  테스트가 개발을 주도한다.. 이게 무슨 말일까? 이해가 잘 가지 않는다.순서를 살펴보면 다음과 같다는 건데,, - 코드 작성 -> 테스트 (X)- 테스트 케이스 작성 -> 코드작성 (O)원하는 코드에 대한 테스트를 먼저 작성하고, 이 테스트를 통과하도록 코드를 작성하는 것이다.좀 더 자세히 알아보자!  테스트 케이스는 코드에 적용하려는 동작을 설명한다.어떠한 동작을 해내는지를 검사하는 거니까 코드를 어떠한 동작, 즉 목적에 맞는 코드를 개발하는데 집중하게 한다는 것이다.무슨 코드를 작성해야하는지 명확하게 하는 느낌..! 고객의 입장에서 개발을 바라보는 것이다.  기본 TDD 워크플로우는 다음과 .. 2024. 10. 6.
최소 실행 가능 제품(MVP) 최소 실행 가능 제품이란 무엇인가? 프로젝트의 첫 번째 단계? 혹은 첫 번째 베타 버전? 아니다.최소 실행 가능 제품, MVP는 제품이 상품화될 가치가 있는지, 변경을 가해야 할지 이대로 쭉 진행해야 할지 피드백을 얻기 위해 훌륭한 방법으로 가치 가설을 테스트하고 학습과 이해를 얻기 위해 할 수 있는 최소한의 작업이다.  즉, 고객의 니즈를 충족하기 위해 MVP를 제공하는 것이다. 한 번에 원하는 MVP를 제공하지 못할 수도 있지만 괜찮다. 실패와 그로 인한 학습을 통해 나은 결과물을 만들기 위한 단계이니까! 그렇다면 MVP는 어떻게 정의하는가?예시로, a사와 b사가 탈것을 만들어달라는 요청을 받았다고 하자.a사는 자동차를 만들기로 결정했고, 설계를 열심히 해서 자동차를 만들기로 했다. 그리고 고객에게 .. 2024. 9. 28.
린 매뉴팩처링(Lean Manufacturing) 프로젝트를 진행할 때 중요한 많고 많은 것 중에서도 빠른 피드백은 정말 원하는 것을 결과로 내기 위해 필수적이다.그래야 작업 방향을 잘못 잡았을 때 빠르게 고칠 수 있다.빠른 피드백을 어떻게 얻을 수 있을까? 바로 린 매뉴팩처링을 따르면 된다. 린 매뉴팩처링(Lean Manufacturing): 소량 배치로 작업하는 것 개발에서 테스트, 운영을 거쳐 제품을 빠르게 낼 수 있는 가장 좋은 방법은 소량으로 작업하는 것이다.봉투를 접고 내용물을 넣고 밀봉하여 도장을 찍어서 편지 봉투가 하나 완성되는데 이 편지 봉투 5개를 만들어야 한다고 가정해 보자.아래 이미지를 보면 알겠지만, 각 단계에서 5개의 과정을 모두 진행하는 것보다 사이클을 다섯 번 돌 때, 먼저 제품이 나온다.먼저 제품이 나오면 제대로 만든 것이.. 2024. 9. 27.