%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4

2019-04-25
스케줄을 처리하는 인스턴스 A와 B가 떠 있을때, 별도의 Master - Slave 구분 없이 둘 중 하나의 인스턴스가 처리하도록 하려면 어떻게 해야 할까요? 어쩔때는 A 가 돌고, 어쩔때는 B 가 돌고... A 가 죽어도 알아서 B 가 돌고 하는 구성을 만들고 싶을때 말이죠. 이런 고민을 하다가 얼마전 발견한 라이브러리 입니다. https://github.com/lukas-krecan/ShedLock 일반적인 경우 Quartz 를 사용하거나 Spring 에서 제공하는 스케줄러를 사용해 주기적인 작업을 처리하도록 개발합니다. 그리고, 많은 경우 배치 인스턴스를 만들면 하나만 띄워서 실행을 해요. 그러다가 죽기라도 하면,...
2019-04-12
그런 일이 가능할까? DDD 같은 개념서를 다 읽지도 않고, 필요한 내용만 대충 훑어서 써먹는 식 말이다. 못할 이유가 뭐가 있는가? 가능하다. 책을 다 읽는다고 해도 소화한 내용 중에서 당장 응용할만한 부분만 구현에 써먹기 마련이다. 책을 다 읽으나 안 읽으나 어차피 일부만 소화해서 써먹을 수 있다면, 책을 안 읽고 써먹는 방법이 있다면 시도해보지 않을 이유가 없지 않는가? 물론, 그렇다고 책을 읽지 말자고 선동하는 것은 아니고 목적은 내 실력 배양에 있고, 응용을 해야 실력이 는다는 점을 강조하는 것이다....
2019-04-11
이 글은 갑자기 벌어진 일상의 장면에서 나 자신이 어떻게 행동하는지 스캔하듯 돌아본 글이다. 그 과정에서 내면을 관찰하고 긍정적인 방향으로 항해 하려고 노력한 기록을 사후 해석해보는 시도이다. CostApproval (비용-결재) 이라는 이름은 적절한가? 최초의 나의 질문은 동료가 지은 이름을 검토하는 일이었다. 처음에는 영어 표현이 옳은지 살피려 했는데, 습관 적으로 위키피디아로 나아갔다. 그런 습관적 행보가 예상하지 못한 일을 만나게 한다. [1] 일단 해당 페이지가 없을 듯 하지만, 그럼에도 불구하고 동료가 만든 조어 그대로 검색한다. 유사 맥락을 포괄하여 한번에 검색 결과를 펼쳐 보려고 습관적으로 행하는 행동 패턴이다. [caption id="attachment_21123" align="aligncenter" width="600"]...
2019-04-03
낮에 동료가 칠판에 그린 그림과 설명하는 말을 듣고, 동료의 질문에 답을 하다가, 무려 1994년에 나온 디자인 패턴 내용을 말하게 된 사연이다. 상속 대신 위임 그가 그린 그림은 아래와 같다. [caption id="attachment_21096" align="aligncenter" width="505"] 벤 다이어그램으로 포함관계를 그린 동료의 그림[/caption] 나는 그에게 물었다. Order가 Sale을 포함한다는 말은 무엇을 의미하냐? 그는 자기 인식과 프로그램으로 구현한 내용을 나름대로 명확하게 설명했다. 나는 구현에 대해 옳고 그름을 판단할 생각이 없어...
2019-03-21
도전적인 제목이다. 예전에는 무려 어떤 컨퍼런스 자리에서 설계 담론을 정리해보겠다고 선언만 하고, 용두사미로 내용없는 발표를 한 일도 있었다. 흑역사다. 그럼에도 불구하고 또 무모한 도전을 해볼 생각이다. 난 직업 작가가 아니라 글 내용으로 욕을 좀 먹어도 괜찮다. 다만, 내가 직업으로 하는 일에서 축적한 내용이 매우 빈약하다는 사실이 무모한 도전을 하게 만든다고 해두자. 대충 그정도로 '구상' 따위를 왜 발표하는지 명확히 한다.  그렇지만, 실제로 이 글을 타이핑 하고 있는 직접적인 동기는 따로 있다. 아침에 페이스북에서 만난 질문과 답변하는 과정에서 내가 느낀 찜찜함...
2019-03-18
이 글은 도메인 주도 설계 Domain-Driven Design (이하 DDD)에서 말하는 값 객체 Value Object 가 무엇인지 알아보고 마이크로서비스 환경에서 값 객체를 활용하는 법을 다룬다. 값 객체란 무엇인가? 전자 상거래 사이트에서 상품을 받을 주소(배송지)를 입력하고 주문한다고 생각해 보자. 시스템에서 배송지를 임의로 수정한다면 상품은 정상적으로 배송되지 못할 것이다. 따라서 시스템은 배송지를 바뀌지 않게 다뤄야 한다. 배송지를 바뀌지 않게 클래스로 표현하면 아래와 같다. 바뀌지 않는다는 것은 생성 이후에는 변경되지 않음을 의미한다. 이를 구현하기 위해 생성자로만 객체를 생성할 수 있으며 속성을 변경하는 Setter가 없다....
2019-03-08
동료 유영모 가 ID로 다른 애그리게잇을 참조하라 에서 애그리게잇을 본문에서 조립물로 바꾼 사연에 대한 이야기다. 두레이로 popit 글 검토를 하는 우리회사 popit 글 검토는popit 저자들이 글을 쓰는 워드프레스 시스템 상에서 벌어진다. 그런데, 사내에서 쓰는 두레이로 우리끼리 대화를 하고 싶어서 회사안에서는 채널을 만들었다. 워드프레스는 결과물 편집은 좋지만, 의견을 주고 받기는 어려우니까. 그러던 차에 내가 검토를 요구하는 유영모 에게 아래와 같이 답했다. [caption id="attachment_21024" align="aligncenter" width="548"]...
2019-03-05
필자는 지난 글 전반부에서 도메인 주도 설계 Domain-Driven Design 에서 말하는 구조물 중 하나 인 조립물 AGGREGATE[1] 에 대해 이야기했다. 조립물을 구현하다 보면 다른 조립물을 참조해야 할 때가 있다. 이를 구현하는 방식은 크게 조립물의 루트 엔터티 Root Entity 객체를 참조(포인터) 하는 것과 식별자로 어디서든 쓸 수 있는 값을 사용하는 방법(ID)이 있다. 도메인 주도 설계 구현 Implementing Domain-Driven Design 의 저자 반 버논 Vernon, Vaughn 은 "ID로 다른 애그리게잇을 참조하라"...
2019-03-01
최근에는 Spring Controller를 이용해서도 View를 반환하기 보다는 API를 작성하는 일이 더 많아졌습니다. API에 대한 부정접근을 확인하거나 디버깅을 위해서 Logging을 필요로 하는 경우가 많은데, Spring에서는 1.2.5부터 이러한 기능을 Servlet Filter 형태로 제공하고 있습니다. 맛보기 아래와 같은 2가지 조건을 통해 사용할 수 있습니다. logger의 debug level을 enable로 Spring Boot 기준으로 아래와 같은 Property 추가 혹은 이에 준하는 설정이 추가되면 가능합니다. CommonsRequestLoggingFilter를 Spring Bean으로 등록...
2019-02-26
Terraform 으로 AWS EMR 을 관리할 때 도움이 되는 몇 가지 팁들을 이야기 합니다....
더보기