전체 글

전체 글

    ATDD를 접하게 된 과정

    많은 곳에서 TDD(테스트 주도 개발)를 하고 있으며 관련 도구가 많이 보인다. 좀 더 테스트 주도 개발을 알고 싶어서 최근에 관련 서적을 읽었다. 위의 두 서적은 제목처럼 TDD 내용이 다뤄진다. 그러나 두 서적 모두 핵심 내용은 TDD를 한 단계 더 확장시킨 ATDD가 중심이다. 생소한 ATDD를 접했지만, TDD와 흡사해서 금방 익숙해질거라 생각했다. 하지만 오래된 서적이라 예제 코드가 이해하기 힘들었거나, 코드없이 설명하니 ATDD를 제대로 이해하기 힘들었다. 좀 더 알고 싶어서 NEXTSTEP에서 진행하는 실습 위주의 교육과정을 수강했다. ATDD와 함께 클린 API로 가는 길 edu.nextstep.camp 서적만으로 이해하기 부족했던 부분을 실습 교육을 통해서 보완을 했다. 이제서야 배운 A..

    📖2021년 회고📃

    2021년은 어떤 시간이었나 21년 2월까지만 해도 최신 기술, 사용 방법에 집착해서 사용법 위주로 학습을 했었다. 하지만 3월에 NEXTSTEP의 TDD, Clean Code With Java 교육을 통해 객체지향을 접하고 많은 것이 변화하기 시작했다. 객체지향을 알게 되면서 이전까지 회사에서 개발해도 시간이 지날수록 유지보수가 힘들어지는 이유가 무엇인지 뒤늦게 깨달았다. 꾸준히 리팩토링하면서 관리한다고 생각했지만 처음부터 개발 방식이 잘못되었던 것이다. 객체지향을 통해 새로운 시각을 열게 되면서, 객체지향을 더 학습하고 싶어 관련된 다양한 서적을 찾아서 읽었다. 그 외에도 교육과 다양한 기술 서적을 읽었지만 객체지향을 중심으로 학습한 한 해였다. 21년에 읽은 책 목록 21년 상반기까지 읽었던 책을 ..

    바운디드 컨텍스트(BOUNDED CONTEXT)

    시작하면서 우리는 하나의 단어를 여러 의미로 사용하는 상황을 많이 마주했으며, 앞으로도 계속 사용될 예정이다. 비즈니스에서 Account라는 단어를 보면 은행에서는 계좌로 보지만, ERP 시스템에서는 계정으로 사용된다. 이렇듯 글자는 같지만 의미가 다른 걸 동음이의어라 부른다. 개발적인 측면에서 애플리케이션의 전체적인 구조를 보면 다양한 도메인에서 같은 용어가 많이 발생하는 걸 볼 수 있다. 용어의 중복이 많다보니 하나의 모델로 처리하려는 시도가 생길 수 있다. 하나의 모델이 다양한 도메인에서 사용된다면 Common이라는 공통모듈에 집어넣고 팀 내에서 이를 사용하라고 통보할지도 모른다. 과연 올바른 방법일까? 아니다, 상품이라도 고객이 바라보는 상품과 주문에서의 상품은 서로 다르다. (서로 관리되는 상태..

    2장 - 의존성 역전하기

    객체지향 SOLID 원칙은 가장 기본적이면서 광범위하게 사용되고 있는 설계 규칙이다. (다양한 책에서 빠지지 않고 언급되는 원칙이다.) 이번 장에서는 단일 책임 원칙(Single Responsibility Principle, SRP)과 의존성 역전 원칙(Dependency Inversion Principle, DIP)을 다룬다. 단일 책임 원칙 일반적으로 단일 책임 원칙의 해석은 아래와 같다. 하나의 컴포넌트는 오로지 한 가지 일만 해야하고, 그것을 올바르게 수행해야 한다. 직관적으로 해석하다 보니 오해의 여지가 생겨 잘못 이해하는 경우가 있다. 실제 정의는 다음과 같다 컴포넌트를 변경하는 이유는 오직 하나뿐이어야 한다. '책임'을 한 가지 일만 하는 것이 아니라 '변경할 이유'로 해석하는 것이 올바르다..

    1장 - 계층형 아키텍처의 문제는 무엇일까?

    계층형 아키텍처는 애플리케이션의 스케일이 작거나, 개발 시작하기 무난한 아키텍처로 선택받기도 한다. 예전부터 많이 선택되어 왔고 지금도 레거시 기술 스택을 사용하는 회사라면, 계층형 아키텍처로 많이 개발을 한다. 계층형 아키텍처는 견고한 아키텍처 패턴이다. 계층을 잘 이해하고 구성한다면 웹 계층이나 영속성 계층에 독립적으로 도메인 로직을 작성할 수 있다. 도메인 로직에 영향을 주지 않고 웹 계층이나 영속성 계층의 기술을 변경할 수 있다. 하지만 현재에 이르러서는 계층형 아키텍처 때문에 문제가 생기는 곳이 많고 각종 책에서는 계층형 아키텍처의 문제점을 언급하고 비권장하기도 한다. 왜 계층형 아키텍처가 문제가 되었는지 알아보자. 계층형 아키텍처는 데이터베이스 주도 설계를 유도한다 계층형 아키텍처에서 먼저 생..

    시작글 - 만들면서 배우는 클린 아키텍처

    이 책을 구매하고 읽은 이유는 간단하다. 최근에 읽었던 클린 아키텍처의 내용이 추상적인 게 많아 개념만 이해해서 코드로 구현해야 할 방법을 좀 더 알고 싶었는데, 때마침 이 책이 발간되었고 책의 추천사에 오브젝트의 저자 조영호님이 이런 문구를 남기셨다. 유연하고 유지보수가 용이한 아키텍처를 구축하는 방법이 궁금하다면 이 책을 읽으세요. 여러분의 아키텍처를 어떻게 개선할지, 도메인 중신의 개발을 위해 필요한 아키텍처를 어떻게 구현할지 알지 못한다면 이 책을 읽으세요. 도메인 주도 설계를 지원할 수 있는 아키텍처의 모습이나 클린 아키텍처의 실체가 궁금하다면 이 책을 읽으세요. 여러분이 여기에 해당되지 않더라도 이 책을 읽으세요. 구매할 수 밖에 없는 아주 강렬한 추천사다. 제목 그대로 예제 코드 비중이 높고..

    유비쿼터스 언어(UBIQUITOUS LANGUAGE)

    프로젝트를 진행하다보면 다음과 같은 상황을 겪어볼 수 있다. 첫번째 - 회원 관련 사용자A : 신규 회원을 등록하겠습니다. 사용자B : 신규 회원을 추가하겠습니다. 사용자가 말하는 등록과 추가는 무슨 의미일까? 모두 신규 회원이 가입되었다는 의미로 사용하는 걸까? 두번째 - 상품 관련 MD1 : 노트북 상품을 추가하겠습니다. MD2 : 노트북 제품을 등록하겠습니다. 사용자가 말하는 상품과 제품은 같은 의미로 사용하는 걸까? 추가와 등록은 이전 회원에 비해 헷갈린다. 단순히 수량을 추가하는 걸까? 새롭게 상품&제품을 등록한다는 걸까? 이렇듯 같은 팀내에서 도메인에 대한 용어가 제각각인 경우를 겪어본 적이 있을 거다. (혹은 용어가 같지만 다른 의미로 사용된 경우) 이런 차이로 같은 도메인을 서로 다르게 바..

    HTTP 헤더2 - 캐시와 조건부 요청

    김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식을 수강하면서 HTTP 내용을 정리한다. 자세한 정보가 궁금하면 수강을 추천드립니다. 모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의 실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., 웹 기술을 사용하는 개발자라면 누구나 OK!꼭 필요한 HTTP의 핵심을 알려드립니다. 📣 확인해주세요!본 강의는 자바 스 www.inflearn.com 캐시 기본 동작 캐시가 없을 때 서버한테 star 이미지를 요청한다. 요청 결과로 1.1M 이미지를 받는다. 여기서 새로고침을 하거나 브라우저를 닫고 나중에 재요청을 한다면 똑같이 1.1M 이미지를 다시 받게 될 거다. 캐시가 없으면 - 데이터가 변경되지 않아도 계속 네..