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

더 좋은 개발자 되기16

제어 불가능한 것을 제어하자 (2) - static method 를 mocking 하는 다양한 방법들 해당 제어 불가능한 것을 제어하자 라는 글은 2편의 시리즈로 이루어져 있습니다. static method 를 mocking 하기 힘든 이유 static method 를 mocking 하기 2022. 7. 25.
제어 불가능한 것을 제어하자 (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.
[트레바리] 다양한 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.
[클라우드 기반 보안 실습 플랫폼 개발기] Spring-Boot 에서 OpenFeign 과 CompletableFuture 를 이용한 비동기적 HTTP 요청 오늘은 클라우드 기반 샌드박스 보안 실습 플랫폼-github 바로가기 개발을 하며 사용했던 OpenFeign 과 CompletableFuture의 사용 경험을 공유해보려 한다. 목차 배경 기술 선정 HTTP Client 의 선정 비동기 처리 방법 후기 장단점 발전 가능 사항 배경 클라우드 기반 보안 실습 플랫폼을 개발하며 내가 구현해야하는 feature 는 다음과 같았다. 1. 강사는 클래스(수업)을 생성할 수 있고, 하나의 클래스(수업)이 생성되면 클래스에서 사용될 실습 Computing Engine 을 할당받는다. 2. 학생은 클래스(수업)에 초대되면 실습 Computing Engine 을 할당받는다. 3. 강사는 수업 도중 학생들의 컨테이너에 있는 웹서버와 통신을 수행해서 학생들의 실습 상황을 확인.. 2022. 1. 5.