🗂️ 개인프로젝트/말랑말랑

🗂️ 개인프로젝트/말랑말랑

[개인프로젝트/말랑말랑] 8. 분산 시스템 테스트하기

소개이전 장에서 복잡한 분산 시스템을 만들었다. 세 개의 기능적인 마이크로서비스(UI, 곱셈, 게임화)와 이를 지원하는 두 개의 마이크로서비스(주울로 만든 API 게이트웨이와 유레카로 구현한 서비스 레지스트리)로 구성했다. 그리고 답안부터 점수까지 여러 마이크로서비스에 걸쳐 진행되는 비즈니스 프로세스를 충족시키기 위해 이벤트 중심 접근법을 적용했다. 이렇게 많은 구성 요소가 있다면 그중 하나가 실패할 가능성이 있다. 물론 일체형에서도 마찬가지지만, 마이크로서비스 아키텍처에서는 컴포넌트(마이크로서비스)가 독립적으로 빌드 및 배포되기 때문에 모든 구성 요소가 잘 동작하는지 확인하는 것이 훨씬 더 중요하다. 마이크로서비스별로 테스트 스위트(suite)를 만드는 것으로는 충분하지 않다. 수정 후에도 모든 엔드투..

🗂️ 개인프로젝트/말랑말랑

[개인프로젝트/말랑말랑] 7. 마이크로서비스 도구 다루기 2

코드 작성API 게이트웨이와 주울 구현스프링 부트 애플리케이션이 주울 게이트웨이로 동작하게 하려면 메인 클래스에 @EnableZuulProxy 애노테이션을 추가하기만 하면 된다. 주울은 프로퍼티 파일에서 라우팅을 구성할 수 있어 매우 쉽고 간편하다. 참고)책이 워낙 오래돼서(2019년이면 벌써 5년 전...) 책 속 예제를 적용하기 위해 이런저런 수정을 해줘야 했다! 일단 마이크로서비스 아키텍처를 이해하는 게 중요해서, 자바와 스프링 부트 버전을 낮춰서 예제가 일단 돌아갈 수 있게 변경해 주었다. 스프링 부트 3에서는 Zuul 대신 Spring Cloud Gateway를 사용하는 방법을 추천하고 있다. 스프링 부트 2로 변경하고, 해당 버전에 맞는 Spring Cloud 버전을 설정해 주었다. Gradl..

🗂️ 개인프로젝트/말랑말랑

[개인프로젝트/말랑말랑] 6. 마이크로서비스 도구 다루기 1

소개이전 장은 끝났지만 아직 마무리하지 못한 일이 있다. 세 번째 사용자 스토리를 완성하고, 사용자가 게임 진행 상황을 볼 수 있게 하는 작업이다. 이 작업을 아직 끝내지 않은 이유는 더 나은 마이크로서비스 아키텍처를 구축하기 위해서이다. 이를 위해서는 시스템 UI를 새로운 서비스로 뽑아내서 독립적인 부분으로 만들고, 기존의 곱셈, 게임화 서비스와 상호작용을 하도록 만들어야 한다. UI를 따로 두고 마이크로서비스와 통신한다면 환경은 더욱 복잡해진다. 하지만 이게 마이크로서비스이다! 장점도 있지만 그만큼 복잡해진다. 이번 장에서는 두 개의 서비스를 호스트명과 포트로 호출하는 UI부터 시작한다. 그러면 서비스끼리 강하게 결합되어 인프라를 확장해도 시스템은 확장할 수 없으며 유지 관리가 매우 어려운 시스템이 ..

🗂️ 개인프로젝트/말랑말랑

[개인프로젝트/말랑말랑] 5. 마이크로서비스 시작하기 2

게임화 마이크로서비스 살펴보기개요새로운 프로젝트를 생성한다.+ JPA 의존성도메인 추가게임 도메인 모델은 다음과 같이 구성된다.ScoreCard: 주어진 사용자가 주어진 시간에 획득한 점수의 모델Badge: 게임에서 사용하는 모든 배지의 목록BadgeCard: 특정 사용자가 특정 시간에 획득한 배지LeaderBoardRow: 리더보드(다른 사용자와 종합 점수가 표시)에서의 위치GameStats: 주어진 사용자의 점수와 배지, 하나의 게임 결과 또는 점수와 배지 합산에 사용될 수 있음카드(점수와 배지)는 획득한 시간 정보를 포함한다. 게임 결과는 하나 이상의 ScoreCard와 하나 이상의 BadgeCard를 포함한다. 리포지토리 추가엄밀히 말하면 저장해야 할 모델은 사용자의 점수와 얻은 배지이다. 하나의..

🗂️ 개인프로젝트/말랑말랑

[개인프로젝트/말랑말랑] 4. 마이크로서비스 시작하기 1

작은 일체형 접근법앞서 하나로 배포 가능한 애플리케이션을 완성했다. 이 애플리케이션은 작은  일체형이지만, 처음부터 전체 시스템을 설계하고 그 안에서 서로 다른 컨텍스트 또는 바운디드 컨텍스트(bounded contexts)를 정의한 후 동시에 개발을 진행할 수도 있었을 것이다. bliki: Bounded ContextDon't try to build a single, unified model for a large domain. Instead DDD advises us to divide such a domain into many bounded contexts with explicit relationships between them.martinfowler.com이런 전략이 좋을 수도 있다! 처음부터 여러 ..

🗂️ 개인프로젝트/말랑말랑

[개인프로젝트/말랑말랑] 3. 3 계층 스프링 부트 애플리케이션 2

2. 3 계층 스프링 부트 애플리케이션 2 by happyprogfrog · Pull Request #3 · happyprogfrog/mallang작업 내용 새로운 요구사항 구현 데이터 모델 생성, 엔티티 구현 리포지토리를 만들어 데이터 저장 특정 사용자의 최근 5개의 답안을 조회하여 제공하는 작업 진행 새로운 엔드포인트 노출 js 파github.com 사용자 스토리 2최근에 제출한 답안을 보고 싶어요! 그러면 시간이 지나면서 제 두뇌가 얼마나 말랑해졌는지 알 수 있겠죠? 요구사항을 보니, 사용자의 답안을 유지하기 위한 데이터 스토리지가 필요함을 알 수 있다. 다음 단계에 따라 요구사항을 달성해 보자!MultiplicationResultAttempt 클래스의 인스턴스를 모두 저장한다. 그렇게 하면 나중에..

🗂️ 개인프로젝트/말랑말랑

[개인프로젝트/말랑말랑] 2. 3 계층 스프링 부트 애플리케이션 1

2. 3 계층 스프링 부트 애플리케이션 1 by happyprogfrog · Pull Request #2 · happyprogfrog/mallang작업 내용 도메인 설계, 비즈니스 로직 레이어, 프레젠테이션 레이어, 프론트엔드 개발 TIL @SpringBootTest를 남용하지 말 것 TDD 흐름 블로그 글 링크 [개인프로젝트/말랑말랑] 2. 3 계층 스프링 부트github.com 다층 아키텍처다층 아키텍처(multi-tier architecture)는 애플리케이션을 여러 계층으로 나눈 아키텍처이다. 운영 환경에 적합하기 때문에 대부분의 상용 애플리케이션이 다층 아키텍처로 설계되어 있다. 그중 계층을 3개로 나눈 3 계층 구조는 가장 인기 있는 아키텍처로서 웹 애플리케이션을 설계할 때 많이 사용된다.클라..

🗂️ 개인프로젝트/말랑말랑

[개인프로젝트/말랑말랑] 1. 요구사항 분석 및 개발 환경 준비

1. TDD 실습으로 손 풀기 by happyprogfrog · Pull Request #1 · happyprogfrog/mallang작업 내용 개발할 애플리케이션의 요구사항과 테스트 주도 개발 접근법을 알아봄 TDD로 간단한 스프링 부트 애플리케이션을 만들어봄 TIL TDD, BDD, Mock 객체 개념 복습 블로그 글 링크 [개인프로젝github.com 요구사항사용자가 매일 계산 능력을 훈련하는 애플리케이션사용자가 페이지에 접속할 때마다 두 자릿수 곱셈을 보여준다.사용자가 계산한 결과와 닉네임을 입력한 후 데이터를 전송하면, 화면에 결과(성공 또는 실패)가 나타남간단한 게임 요소계산 결과가 맞을 때마다 얻는 점수로 사용자들의 순위를 결과 페이지에 보여줌 개발방식애자일 방식 기반으로 사용자 스토리(Us..

🗂️ 개인프로젝트/말랑말랑

[개인프로젝트/말랑말랑] 0. 프로젝트 개요

프로젝트명스프링 부트를 활용한 마이크로서비스 개발  개발 환경Java 11, Java 17, Spring Boot 2, Spring Boot 3, JPA, JPQLMySQL, H2유레카, 리본, 주울, 하이스트릭스, 큐컴버Gradle, Docker 이번 프로젝트에서 다루는 내용스프링 부트를 이용한 뼈대 만들기잘 알려진 3계층 구조 패턴*에 따라 애플리케이션을 설계하고 구현하는 방법 알아보기 * 3계층 구조 패턴사용자 인터페이스를 다루는 프레젠테이션 계층, 비즈니스 로직을 다루는 애플리케이션 계층, 데이터를 다루는 데이터 계층으로 나눠진 구조로 각 역할별로 계층을 분리함으로써 각 계층의 영향을 최소화하고 웹 디자이너, 개발자, DB 관리자가 분업하기에 유리하다. 테스트 주도 개발사전 요구사항을 구현하기 위..

케로⸝⸝◜࿀◝ ⸝⸝
'🗂️ 개인프로젝트/말랑말랑' 카테고리의 글 목록