본문 바로가기
  • 장원익 기술블로그

분류 전체보기579

제어 불가능한 것을 제어하자 (1) - static method 를 mocking 하기 힘든 이유 해당 제어 불가능한 것을 제어하자 라는 글은 2편의 시리즈로 이루어져 있습니다. static method 를 mocking 하기 힘든 이유 2022. 7. 25.
객체는 특정 문맥에 결합되면 안된다. (feat. 로또 게임 구현하기) 목차 동기 객체는 특정 문맥에 결합되어서는 안된다 로또 게임 구현하기 Overview 컨텍스트 독립성 어떻게 해결할 수 있을까? 동기 조영호 님의 오브젝트 스터디를 진행하면서 책의 절반의 진도가 나갔을 즈음 중간 점검 느낌으로 실습 주제를 하나 정해서 코딩을 해보기로 했다. 우리는 실습의 주제로 next-step 에서 진행하는 실습 과제 하나인 로또 게임 구현하기 로 정했다. 실습에서 실제 우리가 책에서 배운 내용을 적용해보며 코드를 객체지향적으로 구성해보는 실습을 하였는데, 꽤나 재미있는 내용이 있어서 그 경험을 공유하려 한다. 객체는 특정 문맥에 결합되어서는 안된다 객체는 특정 문맥에 결합되어서는 안된다는 이야기가 있다. 특정 문맥에 결합되는 순간 객체는 딱딱해지고 결정되어진다. 클린 아키텍처에서 말.. 2022. 7. 21.
Spring Data 모듈의 save() 는 CQS 를 지키지 않는 것일까? with 참조투명성 목차 배경 Spring Data 는 CQS 를 지키지 않는 것일까? CQS 란? 참조 투명성 배경 최근에 발행했던 글이 하나가 있다. CQRS 패턴에 대한 오해 풀기 라는 글에서 CQS 에 대해서 잠깐 언급한다. [Architecture Pattern] CQRS 패턴에 대한 오해 풀기 목차 도입 Query 와 Command 란? CQRS 란 CQRS 의 장단점 도입 회사 시스템이 전통적인 CRUD 애플리케이션에서 Event 기반의 시스템으로 바뀌어 가는 과정에 팀에 합류를 하게 되어 나의 최근 가장 큰 관심 wonit.tistory.com 해당 글의 포스팅을 준비하면서 CQS 에 대해 작성하다 한가지 큰 오해를 했었는데 오늘 오브젝트라는 책을 읽다보니 그 오해를 풀 수 있었다. 오늘은 그 오해에 대해서 .. 2022. 6. 17.
CQRS 패턴에 대한 오해 풀기 목차 도입 Query 와 Command 란? CQRS 란 CQRS 의 장단점 도입 회사 시스템이 전통적인 CRUD 애플리케이션에서 Event 기반의 시스템으로 바뀌어 가는 과정에 팀에 합류를 하게 되어 나의 최근 가장 큰 관심사가 바로 이 CQRS 이다. 학부 시절에도 마이크로서비스를 공부하며 잠깐 잠깐 봤던 CQRS 는 이름 부터 생소하기에 겁을 먹었던 기억이 난다. 하지만 CQRS 의 원리 자체는 사실 되게 간단하다 Command 와 Query 를 분리하자! Command 와 Query 를 먼저 정의하고 이야기를 계속 해보자 Query 와 Command 란? Query 와 Command 에 대해서 이야기 하기 위해서는 CQS 에 대해서 먼저 알아볼 필요가 있다. CQS 는 Design By Contr.. 2022. 6. 11.
[트레바리] 다양한 Type 의 Notification 전송 시스템인 Notifier 프로젝트를 회고하며 목차 나는 무엇을 회고하는가 나에게 칭찬한다 (Keep) 기술적인 배움 무엇이 문제였는가? (Problem) 다음 프로젝트에서는? (Try) 나는 무엇을 회고하는가 Notifier AS-IS와 TO-BE AS-IS 트레바리의 크루는 SMS 를 보내기 위해서 직접 외부 SMS 모듈 (Senders, Twillio) 를 직접 들어가서 문자를 전송한다. 또한 Legacy System 에 의해 전송된 문자에 대한 확인을 위해 직접 SMS 모듈로 들어가서 확인한다. TO-BE 문자가 잘 보내졌는지를 트레바리의 Admin 에서 확인할 수 있도록 한다. Notification 을 하나의 시스템에서 보낼 수 있도록 하고 실패한 메시지는 retry 를 수행하게 한다. Scheduling 을 통해 문자를 보내고 State.. 2022. 5. 15.
[Distributed Tracing] Messaging 환경에서의 분산 추적 실습 본 글은 마이크로서비스의 분산 추적 시리즈로 이론과 실습이 함께 포함된 시리즈입니다. 아래 목차에 표시된 글을 모두 참고하면 좋습니다. 목차 Distributed Tracing, 분산 추적이란? Spring Cloud Sleuth 와 Zipkin Sleuth 로 Http 환경의 분산 추적 실습 Sleuth 로 Messaging 환경의 분산 추적 실습 실습에 대한 소스코드를 확인하시고 싶다면 실습 github에서 확인하실 수 있습니다. Messaging 환경 에서의 분산 추적 실습 지난 시간 우리는 HTTP 환경에서의 분산 추적 에 대해서 알아보았다. 다시 한번 개략적인 아키텍처에 대해서 확인해보자 위 아키텍처를 구분하자면 2개의 부분으로 나눌 수 있다. HTTP API Messaging 이번에는 HTTP.. 2022. 5. 1.