목록분류 전체보기 (368)
잡동사니
안녕하세요. yeTi입니다. 오늘은 도메인 주도 설계 의 3부의 읽은 후기를 기록하려고 합니다. 3부는 내용이 많이서 2편으로 나눠서 기록합니다. 지속적인 리팩터링을 통해 심층모델로 도약할 수 있다. 리팩터링이란 소프트웨어의 기능을 수정하지 않고 설계를 다시 하는 것을 의미합니다. 관건은 사전에 모든 설계 결정을 내리기보다는 기존의 기능은 유지한 채 끊임없이 코드를 변경하면서 설계를 좀 더 유연하게 개선하거나 이해하기 쉽게 만드는 과정이라는 것이죠. #XP 에서는 점진적 설계를 말하고 #TDD 에서는 작은 목표를 기반으로한 지속적인 리팩토링을 말합니다. (모두 켄트 벡의 저서입니다.) DDD에서는 리팩터링의 수준에 대해 이야기 합니다. 리팩터링의 목표는 개발자가 단순히 코드가 수행하는 바를 이해하는 것뿐..
안녕하세요. yeTi입니다. ChatGPT의 활용법 (feat. 정보수집 방식의 전환) 에서 ChatGPT의 쓰임새를 인식하고 ChatGPT를 활용하여 궁금증을 해소한 예시를 공유하고자 합니다. 문답 코틀린의 가치는 뭐라고 생각해? Kotlin의 value 나 worth는 몇 가지 방식으로 해석할 수 있습니다: 시장 가치: Kotlin은 Android 앱 개발에 널리 사용되는 프로그래밍 언어이며 업계에서 널리 사용되고 있습니다. Kotlin에 능숙한 개발자는 종종 좋은 직업 전망을 가지고 있으며 경쟁력 있는 급여를 받을 수 있습니다. 오픈 소스 커뮤니티: Kotlin은 오픈 소스이며, 그 가치는 커뮤니티의 힘으로 측정할 수 있습니다. 커뮤니티가 활발하다는 것은 개발자를 위한 지속적인 개발, 지원 및 풍부..
안녕하세요. yeTi입니다. 오늘은 어제(2023-09-19) 공식적으로 발표한 Java21의 스펙을 간략하게 살펴보고자 합니다. 개요 Core Java Library JEP 431: Sequenced Collections JEP 442: Foreign Function & Memory API (Third Preview) JEP 444: Virtual Threads JEP 446: Scoped Values (Preview) JEP 448: Vector API (Sixth Incubator) JEP 453: Structured Concurrency (Preview) Java Language Specification JEP 430: String Templates (Preview) JEP 440: Record ..
안녕하세요. yeTi입니다. 오늘은 MSA 의 거장, Chris Richardson 이 운영하는 Microservice Architecture 에서 제공하는 패턴 중 하나인 Self-contained service 패턴의 번역본을 생성하고자 합니다. ** 본 컨텐츠의 원본은 Chris Richardson 의 저작물인점을 참고해주세요. ** Context 온라인 음식 배달 애플리케이션인 FTGO 애플리케이션을 예로 들어보겠습니다. 애플리케이션의 클라이언트는 HTTP POST /orders 요청을 통해 주문을 생성하고 600ms 이내의 응답을 기대합니다. FTGO 애플리케이션은 마이크로서비스 아키텍처를 사용하기 때문에 주문 생성을 구현하는 책임이 여러 서비스에 흩어져 있습니다. POST 요청은 먼저 주문 서..
안녕하세요. yeTi입니다. ChatGPT의 활용법 (feat. 정보수집 방식의 전환) 에서 ChatGPT의 쓰임새를 인식하고 ChatGPT를 활용하여 궁금증을 해소한 예시를 공유하고자 합니다. 더하여 Microsoft에서 개발한 Bing AI와 비교하여 답변의 차이를 확인하고자 합니다. 문답 객체 지향 분석 및 설계(OOAD)가 객체 지향 프로그래밍(OOP)과 다른 점은 뭐야? 객체 지향 분석 및 설계(OOAD)와 객체 지향 프로그래밍(OOP)은 소프트웨어 개발에서 서로 다르지만 밀접하게 관련된 두 가지 개념입니다. 두 개념의 차이점은 다음과 같습니다: 객체 지향 분석 및 설계(OOAD): OOAD는 객체 지향 원칙과 방법론을 사용하여 소프트웨어 시스템을 분석하고 설계하는 프로세스입니다. 문제 도메인을..
안녕하세요. yeTi입니다. 오늘은 도메인 주도 설계 의 2부의 읽은 후기를 기록하려고 합니다. 도메인을 격리하자 도메인의 격리를 보편적으로 할 수 있는 방식은 LAYERED ARCHITECTURE 입니다. 객체지향 프로그램을 개발하면서 가장 쉬운 방법으로 도메인 코드와 도메인과 관련없는 코드를 혼재하는 것입니다. 그러나 이렇게 되면 도메인과 관련된 코드를 확인하고 추론하기가 힘들어지고 모델 주도적인 객체를 구현하는 것이 비현실적인 이야기가 돼버립니다. 객체지향의 5대원칙 중 하나인 관심사의 분리가 중요한 요소로 언급되는 것처럼 소프트웨어 시스템을 분리하는 방법 중 보편적으로 사용하는 것이 LAYERED ARCHITECTURE 입니다. 그 외의 다수의 패턴들이 풀고자 했던 문제 중 하나는 느슨한 결합을 ..
안녕하세요. yeTi입니다. 오늘은 마틴 파울러의 테스트 커버리지 를 계기로 삼아 테스트 커버리지를 알기위해 노력했던 경험을 공유하고 스스로 정의내린 테스트 커버리지의 의미를 공유하고자 합니다. 숙제 지난 4년간 풀지못한 숙제가 있습니다. 테스트 커버리지가 가지는 가치는 무엇일까? 테스트 커버리지를 100% 달성했다는 것은 무엇을 의미할까? 테스트 커버리지가 높아도 버그는 있어. 노력 1 - 소프트웨어 테스팅 2019년 07월 K-MOOC 의 강좌 중 하나인 소프트웨어 테스팅 을 접하게 됩니다. 해당 강의를 보며 완벽한 테스팅은 기술적으로 불가능하다는 것은 명시적으로 느끼고 테스트 기법이나 커버리지의 종류에 대해 접할 수 있는 기회가 되었습니다. 그러나 실무에서 사용할 수 있는것은 없어서 아쉬움이 남았습..
안녕하세요. yeTi입니다. 오늘은 도메인 주도 설계 의 1부의 읽은 후기를 기록하려고 합니다. 책을 선택한 이유 조영호님의 객체지향의 사실과 오해를 보면 도메인 모델을 기반으로한 객체 설계를 말합니다. 도메인 모델로 객체 지도를 만들어라. 그리고 JPA 의 repository 의 주석을 보면 DDD 에 의해 정의된 메카니즘이라고 표현합니다. 그렇게 DDD 를 읽기 시작했습니다. 현실의 복잡성을 풀어나가자 그런데 서문을 읽고 장황하게 설명된 표현들이 도메인 모델을 이해하고 현실의 복잡성을 풀어나가는것이 소프트웨어 개발의 본질이라고 말하는거 같습니다. 머릿속에서 명쾌하게 정리되는 느낌은 없지만 좋은 설계를 목표로, JPA가 지향하는 메카니즘을 이해하는 것을 목표로 읽어나가야 겠습니다. 지식을 보전하고 계승..
안녕하세요. yeTi입니다. 오늘은 조직에서 격는 소통의 어려움을 광장이라는 소통 공간을 활용해서 해서 해소하는 방법을 공유해보고자 합니다. 우리는 광장을 가지고 있나요? 광장은 많은 사회적 정치적 의미가 있지만 이번 글에서는 맥락과 피드백의 관점에서 언급하고자 합니다. 광장에서 맥락과 피드백이란 무엇일까요? 이렇게 상상해보면 좋을꺼 같습니다. 우리가 광장에 앉아있을 때 누군가가 공연을 합니다. 다른 이들은 공연을 볼 수 있는 기회가 생겼고 공연이 마음에 들었으면 화답합니다. 그리고 경우에 따라서 공연에 자연스럽게 참여하기도 하고 누군가는 이어가기도 합니다. 이렇게 어떤 공연자에 의해 만들어진 공연이라는 맥락에서 다수의 사람들이 피드백을 주고 받으며 공연을 풍부하게 만들어 나갑니다. 반면 영화관에서 하는..
안녕하세요. yeTi입니다. ChatGPT의 활용법 (feat. 정보수집 방식의 전환) 에서 ChatGPT의 쓰임새를 인식하고 ChatGPT를 활용하여 궁금증을 해소한 예시를 공유하고자 합니다. 더하여 Microsoft에서 개발한 Bing AI와 비교하여 답변의 차이를 확인하고자 합니다. 문답 프로그래밍 언어의 동적 바인딩 개념에 대해 알아? 예, AI 언어 모델로서 프로그래밍 언어의 동적 바인딩 개념에 대해 잘 알고 있습니다. 동적 바인딩은 런타임에 실행할 메서드나 함수의 결정을 프로그램의 실제 런타임까지 연기하는 객체 지향 프로그래밍에서 사용되는 기법입니다. 이는 컴파일 타임에 실행할 메서드나 함수가 결정되는 정적 바인딩과 대조적입니다. 동적 바인딩에서는 실행할 메서드에 대한 결정이 객체를 참조하는 ..