개발 & 방법론
이벤트 스토밍(Event Storming)
시작하면서 구성원이 수긍하는 유비쿼터스 언어나 바운디드 컨텍스트를 정하려면 어떻게 해야 할까? 비즈니스에 참여하는 구성원이 모여서 소통하고 정해야 할 것이다. 그러면 책상에 앉아 회의처럼 이야기해야 할까? 그럼 전체적으로 정하는데 많은 시간이 소비되고 피로도가 쌓일 것이다. 어떤 방식으로 해야할까? 알베르토 브란돌리니(Alberto Brandolini)가 제안한 비즈니스 도메인을 빠르게 탐색하고 학습할 수 있는 이벤트 스토밍에 대해 알아보자. 이벤트 스토밍이란? 도메인 전문가와 개발자를 학습 과정에 참여시키기 위한 빠른 설계 기술이다. 클래스와 데이터베이스가 아닌 비즈니스 및 비즈니스 프로세스에 중점을 둔다. 모든 사람이 동일한 수준으로 접근할 수 있게 시각적인 접근 한다. 진행 방법 큰 벽이나 화이트보..
REST-Assured 알아보기 (테스트를 위한 클라이언트 객체)
REST Assured? REST API를 단순히 테스트하는 Java DSL(Domain-specific language)이다. POST, GET, PUT, DELETE, PATCH 및 HEAD Request를 지원하며, 요청과 응답을 검증하는 데 사용한다. 왜 사용하는가? 기존의 단위 테스트, 통합 테스트로 개발자의 안심을 이끌어 낼 수 있지만, 이는 내부 개발자의 관점이다. Rest-Assured는 외부 사용자의 관점에서 코드에 상관없이 요청과 응답으로 REST API 자동화 테스트를 구성하고 확인할 수 있어서, 사용자의 관점에서 한번 더 안심을 할 수 있다. 어떻게 보면 테스트를 더 추가하는 거라 과도한 테스트 코드라 의심할 수 있지만, 사용법이 매우 단순하기 때문에 간단히 Java를 알면 사용자 ..
🌐망 분리하기
네트워크(Network)와 통신망 네트워크는 노드(컴퓨터 등)를 통신망을 통해 서로 물리적으로 연결된 체계를 말한다. 통신망은 노드들과 이들 노드들을 연결하는 링크들로 구성된 하나의 시스템으로 줄여서 '망'이라고 부른다. - 노드 : IP로 식별할 수 있는 대상 - 링크 : 물리적 회선 AWS에서의 망 - Region : 국지 / 지역 - Availability Zone : 데이터 센터(ap-northeast-2a, ap-northeast-2b) - VPC : 하나의 Region에 종속, 다수의 AZ설정 가능, VPC IP 대역 내에서 망 구성 AWS의 하나의 Subnet을 하나의 망이라고 칭할 수 있다. 네트워크 장비 네트워크를 구성하는 기본적인 장비는 다음과 같다. - HUB : 네트워크에서 여러 대..
🚚 Cloud를 사용하는 이유
현재 대부분의 서비스는 클라우드를 사용하고 있는데 클라우드가 등장한 배경과 장단점을 알아보려고 한다 Cloud ? 클라우드는 인터넷을 은유적으로 표현하는 말로 인터넷에 연결된 서비스 제공자의 데이터센터에 접속하여 서비스를 사용하는 것을 뜻한다. Cloud Computing ? 서버, 데이터베이스, 네트워킹 등 컴퓨팅 리소스를 클라우드를 통해 관리하는 것을 의미한다. Cloud는 언제 등장한 용어인가? 2006년 9월 구글의 직원 크리스토프 비시글리아가 당시 CEO였던 에릭 슈미트에게 회의에서 처음 제안했다고 한다. 클라우드를 사용하는 이유 다양한 서비스를 사용하는 사용자는 해당 서비스의 내부구조나 아키텍처 같은 거에 관심이 없다. 오로지 본인이 원하는 기능에만 집중한다. 개발자도 마찬가지다. 서비스 제공..
ATDD는 무엇인가?
누구나 겪을 수 있는 상황 개발을 하다 보면 요구사항이 명확하지 않거나 부족한 경우에 많은 고민을 해본 적이 있을 것이다. 기획자에게 물어보거나 같이 요구사항을 해석하면서 개발하면 고객이 원하는 결과물이 아닐 경우가 높다. 기획자와 같이 요구사항을 재확인하여 수정해야 한다. 이런 상황을 예방하고 올바른 요구사항을 충족하려면 고객에게 질문해야 한다. 전화를 하거나 이메일 보내도 고객이 실시간으로 확인하는 것 아니기 때문에 응답에 시간이 걸린다. 답변을 받아도 이해하기 힘들 경우에 다시 정리해서 요청하기도 한다. 개발은 점점 딜레이 되고 고객의 불만이 조금씩 쌓인다. 문제의 원인은 서로 생각하는 관점이 다르기 때문이다. 괴리감을 해결하기 위해선 커뮤니케이션이 필요한데 전화 & 이메일은 한계가 뚜렷하다. 결과..
ATDD를 접하게 된 과정
많은 곳에서 TDD(테스트 주도 개발)를 하고 있으며 관련 도구가 많이 보인다. 좀 더 테스트 주도 개발을 알고 싶어서 최근에 관련 서적을 읽었다. 위의 두 서적은 제목처럼 TDD 내용이 다뤄진다. 그러나 두 서적 모두 핵심 내용은 TDD를 한 단계 더 확장시킨 ATDD가 중심이다. 생소한 ATDD를 접했지만, TDD와 흡사해서 금방 익숙해질거라 생각했다. 하지만 오래된 서적이라 예제 코드가 이해하기 힘들었거나, 코드없이 설명하니 ATDD를 제대로 이해하기 힘들었다. 좀 더 알고 싶어서 NEXTSTEP에서 진행하는 실습 위주의 교육과정을 수강했다. ATDD와 함께 클린 API로 가는 길 edu.nextstep.camp 서적만으로 이해하기 부족했던 부분을 실습 교육을 통해서 보완을 했다. 이제서야 배운 A..
바운디드 컨텍스트(BOUNDED CONTEXT)
시작하면서 우리는 하나의 단어를 여러 의미로 사용하는 상황을 많이 마주했으며, 앞으로도 계속 사용될 예정이다. 비즈니스에서 Account라는 단어를 보면 은행에서는 계좌로 보지만, ERP 시스템에서는 계정으로 사용된다. 이렇듯 글자는 같지만 의미가 다른 걸 동음이의어라 부른다. 개발적인 측면에서 애플리케이션의 전체적인 구조를 보면 다양한 도메인에서 같은 용어가 많이 발생하는 걸 볼 수 있다. 용어의 중복이 많다보니 하나의 모델로 처리하려는 시도가 생길 수 있다. 하나의 모델이 다양한 도메인에서 사용된다면 Common이라는 공통모듈에 집어넣고 팀 내에서 이를 사용하라고 통보할지도 모른다. 과연 올바른 방법일까? 아니다, 상품이라도 고객이 바라보는 상품과 주문에서의 상품은 서로 다르다. (서로 관리되는 상태..
유비쿼터스 언어(UBIQUITOUS LANGUAGE)
프로젝트를 진행하다보면 다음과 같은 상황을 겪어볼 수 있다. 첫번째 - 회원 관련 사용자A : 신규 회원을 등록하겠습니다. 사용자B : 신규 회원을 추가하겠습니다. 사용자가 말하는 등록과 추가는 무슨 의미일까? 모두 신규 회원이 가입되었다는 의미로 사용하는 걸까? 두번째 - 상품 관련 MD1 : 노트북 상품을 추가하겠습니다. MD2 : 노트북 제품을 등록하겠습니다. 사용자가 말하는 상품과 제품은 같은 의미로 사용하는 걸까? 추가와 등록은 이전 회원에 비해 헷갈린다. 단순히 수량을 추가하는 걸까? 새롭게 상품&제품을 등록한다는 걸까? 이렇듯 같은 팀내에서 도메인에 대한 용어가 제각각인 경우를 겪어본 적이 있을 거다. (혹은 용어가 같지만 다른 의미로 사용된 경우) 이런 차이로 같은 도메인을 서로 다르게 바..