목록IT Paradigm (28)
잡동사니
안녕하세요. 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 의 강좌 중 하나인 소프트웨어 테스팅 을 접하게 됩니다. 해당 강의를 보며 완벽한 테스팅은 기술적으로 불가능하다는 것은 명시적으로 느끼고 테스트 기법이나 커버리지의 종류에 대해 접할 수 있는 기회가 되었습니다. 그러나 실무에서 사용할 수 있는것은 없어서 아쉬움이 남았습..
안녕하세요. yeTi입니다. 오늘은 도메인 주도 설계 의 1부의 읽은 후기를 기록하려고 합니다. 책을 선택한 이유 조영호님의 객체지향의 사실과 오해를 보면 도메인 모델을 기반으로한 객체 설계를 말합니다. 도메인 모델로 객체 지도를 만들어라. 그리고 JPA 의 repository 의 주석을 보면 DDD 에 의해 정의된 메카니즘이라고 표현합니다. 그렇게 DDD 를 읽기 시작했습니다. 현실의 복잡성을 풀어나가자 그런데 서문을 읽고 장황하게 설명된 표현들이 도메인 모델을 이해하고 현실의 복잡성을 풀어나가는것이 소프트웨어 개발의 본질이라고 말하는거 같습니다. 머릿속에서 명쾌하게 정리되는 느낌은 없지만 좋은 설계를 목표로, JPA가 지향하는 메카니즘을 이해하는 것을 목표로 읽어나가야 겠습니다. 지식을 보전하고 계승..
안녕하세요. yeTi입니다. 오늘은 객체지향의 사실과 오해 읽은 후기를 기록하려고 합니다. 책을 선택한 이유 OOP 에 대해 알고 싶은 마음에 개념의 창시자이신 Alen Kay 님의 The early history of SmaillTalk 을 읽고 깊은 감명을 받아 기록으로 남겼습니다. OOP의 기원 (feat. 객체와 메시지) 이 후 조용호 님의 오브젝트 를 읽어볼까 하다가. 뭔가 상세한 지식을 접하기 전에 객체와 메시지에 대한 시야를 넓히고 싶다는 생각에 객체지향의 사실과 오해 를 선택했습니다. 저는 책의 서문을 주의깊게 읽는 스타일인데요. 조용호 님이 이 책을 집필하신 동기나 목적이 제가 알고 싶어하는 부분과 일맥상통(一脈相通) 하다는 느낌을 받아 이 책을 잘 선택했다는 기쁨을 느낄 수 있었습니다...