목록IT Paradigm (30)
잡동사니
안녕하세요. yeTi입니다. 오늘은 도메인 주도 설계 4부를 읽고 난 느낌을 기록하려고 합니다. 지난 편에 이어 오늘은 4부(전략적 설계)의 2편입니다. 15장 디스틸레이션 - CORE DOMAIN (핵심 도메인) 지금까지 맥락을 살펴보면 지식을 얻고 쌓아나가며 언어의 맥락을 일치해 같은 개념을 가지는 것을 중심에 두고 에릭 에반스는 이야기를 풀어나가고 있습니다. 이를 달성하기 위한 중심 패러다임은 MODEL-DRIVEN DESIGN 을 채용하고 있고 경험의 누적에 따른 통찰력이 모델로 표현되어야 한다고 말합니다. 모델이 설계를 더 잘 지원하기 위해 정제되는 것처럼 설계 또한 새로운 통찰력을 도메인에 반영하기 위해 정제돼야 한다. - p.172, 7장 언어의 사용 - 도메인 격리 해당 장에서는 지식을 어..
안녕하세요. yeTi입니다. 오늘은 도메인 주도 설계 4부를 읽고 난 느낌을 기록하려고 합니다. 4부도 내용이 많아서 작은 부분으로 나눠서 기록합니다. 오늘은 4부의 1편입니다. 14장 모델의 무결성 유지 - BOUNDED CONTEXT 2018년부터 MSA를 흉내 내면서 각 서비스 간 경계를 나누는 방법으로 BOUNDED CONTEXT를 알게 됐습니다. 그러나 BOUNDED CONTEXT를 단순하게 서비스 단위를 나누는 경계로 인식하니 어떻게 사용해야 좋은지 알 수 없어 어렵게 다가왔습니다. 에릭 에반스가 말하는 BOUNDED CONTEXT는 명료합니다. 모델 컨텍스트란 모델에서 사용된 용어를 특정한 의미로 의사소통하기 위한 조건의 집합이다. - p.362 동일한 모델이라도 맥락에 따라 내포하는 의미와..
안녕하세요. yeTi입니다. 오늘은 에릭 에반스의 도메인 주도 설계를 읽다가 도메인의 의미와 도메인 주도라는 것의 의미를 생각해본 결과를 공유하고자 합니다. 도메인이란 에릭 에반스의 DDD 함께 읽기를 진행하면서 15장 디스틸레이션에 핵심 도메인을 다시 읽을 기회가 생겼습니다. 그런데 문득 도메인이라는 단어를 굉장히 모호한 개념으로 인식하고 있다고 느껴, 무엇을 의미하는지 찾아보고 싶어졌습니다. 그래서 먼저 영어사전에서 도메인이라는 단어의 뜻을 찾아봤습니다. an area of interest or an area over which a person has control, 관심 영역 또는 개인이 통제할 수 있는 영역 신기하게도 관심 영역이었습니다. 막연하게 어떤 분야, 업무 정도로 생각했던 개념이 보다 단..
안녕하세요. yeTi입니다. 오늘은 도메인 주도 설계 의 3부의 읽은 후기를 기록하려고 합니다. 3부의 2편입니다. 선언적 설계 선언적 설계는 대상에 따라 다양한 의미를 지닐 수 있지만 일반적으로 일종의 실행 가능한 명세(executable specification)로서 프로그램 전체 혹은 프로그램의 일부를 작성하는 방식을 의미한다. - p.289 선언적 설계는 프로그램을 생성하는 방법이 일종의 성배에 해당한다는 구절을 보면서 이전에 안영회 대표님께서 알려주신 MDD가 떠올랐습니다. (폭포수 방식 설계는 기술 부채를 남긴다) 해당 글에서 다음과 같이 언급합니다. 다양한 맥락을 포용해야하는 비즈니스 시스템에서 마치 '자동화' 결과물이 모든 프로그램을 대체하는 일인 것처럼 생각하면 큰 오산입니다. 결론적으로..
안녕하세요. yeTi입니다. 요즘은 객체 지향 에 다가서는 시기인가 봅니다. 지난 포스팅 지향하다. (feat. Object-oriented Programming) 과 안영회 대표님 의 피드백 후배 덕분에 한 번 더 생각하는 객체 지향 에 이어진 만남에서 객체 지향을 바라보는 시각이 좀 더 명확해진 거 같다는 느낌이 들었습니다. 안영회 대표님이 주관하시는 사랑방 세미나 3회차 - 생물과 에너지 를 들으며 신재웅 이사님께서 생물이 에너지를 응용하는 방식에서 설계적 패턴을 찾을 수 있을지도 모른다는 접근법을 듣는 순간 앨런 케이의 객체지향이 떠올랐습니다. 반응과 상호작용 에너지 순환 시스템이나 신경 전달 시스템에 대한 설명을 들으면서 드는 느낌은 각 세포나 기관은 자신이 가진 역할을 온전하게 수행하는데만 관..
안녕하세요. yeTi입니다. 오늘은 어제 XP 책걸이 모임에서 안영회 대표님 께서 지향하다 를 설명해주신게 인상깊어 기록으로 남기고자 합니다. 객체지향 (客體 指向, Object Oriented) 객체지향이 어려운 이유는 지향이라는 의미를 받아들이기 어렵기 때문이라고 생각합니다. 그런 의미에서 객체 지향의 한자를 찾아봤습니다. 客體 指向 (객체 지향) : 손 객, 몸 체, 가리킬 지, 향할 향 - 네이버 한자사전 글자의 조각으로는 이해가 되지 않습니다. 단어의 풀이를 보겠습니다. 客體 (객체) : 문장(文章) 내에서 동사(動詞)의 행위(行爲)가 미치는 대상(對象). - 네이버 한자사전 指向 (지향) : 지정(指定)해 그 쪽으로 향(向)하게 함. 또는 그 방향(方向). - 네이버 한자사전 그럴듯하지만 표현..
안녕하세요. yeTi입니다. 오늘은 도메인 주도 설계 의 3부의 읽은 후기를 기록하려고 합니다. 3부는 내용이 많이서 2편으로 나눠서 기록합니다. 지속적인 리팩터링을 통해 심층모델로 도약할 수 있다. 리팩터링이란 소프트웨어의 기능을 수정하지 않고 설계를 다시 하는 것을 의미합니다. 관건은 사전에 모든 설계 결정을 내리기보다는 기존의 기능은 유지한 채 끊임없이 코드를 변경하면서 설계를 좀 더 유연하게 개선하거나 이해하기 쉽게 만드는 과정이라는 것이죠. #XP 에서는 점진적 설계를 말하고 #TDD 에서는 작은 목표를 기반으로한 지속적인 리팩토링을 말합니다. (모두 켄트 벡의 저서입니다.) DDD에서는 리팩터링의 수준에 대해 이야기 합니다. 리팩터링의 목표는 개발자가 단순히 코드가 수행하는 바를 이해하는 것뿐..
안녕하세요. yeTi입니다. 오늘은 MSA 의 거장, Chris Richardson 이 운영하는 Microservice Architecture 에서 제공하는 패턴 중 하나인 Self-contained service 패턴의 번역본을 생성하고자 합니다. ** 본 컨텐츠의 원본은 Chris Richardson 의 저작물인점을 참고해주세요. ** Context 온라인 음식 배달 애플리케이션인 FTGO 애플리케이션을 예로 들어보겠습니다. 애플리케이션의 클라이언트는 HTTP POST /orders 요청을 통해 주문을 생성하고 600ms 이내의 응답을 기대합니다. FTGO 애플리케이션은 마이크로서비스 아키텍처를 사용하기 때문에 주문 생성을 구현하는 책임이 여러 서비스에 흩어져 있습니다. POST 요청은 먼저 주문 서..
안녕하세요. yeTi입니다. 오늘은 도메인 주도 설계 의 2부의 읽은 후기를 기록하려고 합니다. 도메인을 격리하자 도메인의 격리를 보편적으로 할 수 있는 방식은 LAYERED ARCHITECTURE 입니다. 객체지향 프로그램을 개발하면서 가장 쉬운 방법으로 도메인 코드와 도메인과 관련없는 코드를 혼재하는 것입니다. 그러나 이렇게 되면 도메인과 관련된 코드를 확인하고 추론하기가 힘들어지고 모델 주도적인 객체를 구현하는 것이 비현실적인 이야기가 돼버립니다. 객체지향의 5대원칙 중 하나인 관심사의 분리가 중요한 요소로 언급되는 것처럼 소프트웨어 시스템을 분리하는 방법 중 보편적으로 사용하는 것이 LAYERED ARCHITECTURE 입니다. 그 외의 다수의 패턴들이 풀고자 했던 문제 중 하나는 느슨한 결합을 ..
안녕하세요. yeTi입니다. 오늘은 마틴 파울러의 테스트 커버리지 를 계기로 삼아 테스트 커버리지를 알기위해 노력했던 경험을 공유하고 스스로 정의내린 테스트 커버리지의 의미를 공유하고자 합니다. 숙제 지난 4년간 풀지못한 숙제가 있습니다. 테스트 커버리지가 가지는 가치는 무엇일까? 테스트 커버리지를 100% 달성했다는 것은 무엇을 의미할까? 테스트 커버리지가 높아도 버그는 있어. 노력 1 - 소프트웨어 테스팅 2019년 07월 K-MOOC 의 강좌 중 하나인 소프트웨어 테스팅 을 접하게 됩니다. 해당 강의를 보며 완벽한 테스팅은 기술적으로 불가능하다는 것은 명시적으로 느끼고 테스트 기법이나 커버리지의 종류에 대해 접할 수 있는 기회가 되었습니다. 그러나 실무에서 사용할 수 있는것은 없어서 아쉬움이 남았습..