목록분류 전체보기 (375)
잡동사니
안녕하세요. 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 언어 모델로서 프로그래밍 언어의 동적 바인딩 개념에 대해 잘 알고 있습니다. 동적 바인딩은 런타임에 실행할 메서드나 함수의 결정을 프로그램의 실제 런타임까지 연기하는 객체 지향 프로그래밍에서 사용되는 기법입니다. 이는 컴파일 타임에 실행할 메서드나 함수가 결정되는 정적 바인딩과 대조적입니다. 동적 바인딩에서는 실행할 메서드에 대한 결정이 객체를 참조하는 ..
안녕하세요. yeTi입니다. 오늘은 종종 헷갈리는 서비스 레이어의 테스트를 바라보는 관점에 대해 말해보고자 합니다. 발단 Spring 으로 서버 어플리케이션의 구조를 정의하면 많은 경우 Controller - Service - Repository(DAO) 형식의 layered architecture 를 보게 됩니다. 이러한 구조에서 테스트 환경을 구성하게 되면 테스트 효율성을 높이기 위해 slice test 를 하게 됩니다. 여기서 개발자들의 의문이 생깁니다. Service 테스트를 하려고 하는데요. 데이터가 잘 저장되는지는 어떻게 확인하면 될까요? 이 질문은 테스트를 위한 두 가지 관점이 혼재해서 만들어졌다고 생각합니다. 사용자 관점 우리가 흔하게 정의하는 API만 사용자라는 대상이 있는게 아니라 클래..
안녕하세요. yeTi입니다. 오늘은 객체지향의 사실과 오해 읽은 후기를 기록하려고 합니다. 책을 선택한 이유 OOP 에 대해 알고 싶은 마음에 개념의 창시자이신 Alen Kay 님의 The early history of SmaillTalk 을 읽고 깊은 감명을 받아 기록으로 남겼습니다. OOP의 기원 (feat. 객체와 메시지) 이 후 조용호 님의 오브젝트 를 읽어볼까 하다가. 뭔가 상세한 지식을 접하기 전에 객체와 메시지에 대한 시야를 넓히고 싶다는 생각에 객체지향의 사실과 오해 를 선택했습니다. 저는 책의 서문을 주의깊게 읽는 스타일인데요. 조용호 님이 이 책을 집필하신 동기나 목적이 제가 알고 싶어하는 부분과 일맥상통(一脈相通) 하다는 느낌을 받아 이 책을 잘 선택했다는 기쁨을 느낄 수 있었습니다...
안녕하세요. yeTi입니다. 오늘은 테스트 코드는 도입하고 싶은데 프로젝트 일정에 안 좋은 영향을 줄거같은 걱정을 해소해 드릴 수 있는 근거를 공유해보고자 합니다. 개요 현업에서 개발하시는 분들(개발자 혹은 리더) 과 대화를 하다보면 간혹 다음과 같은 질문을 받습니다. 테스트코드를 작성하면 개발일정을 맞추기가 힘든데 어떻게 도입할 수 있을까요? 그 동안 저도 프로젝트 일정을 늦추는 요인은 된다고 생각하고 있었는데요. 근래에 그렇지 않다 라는 생각이 들어 그 생각을 공유합니다. 프로젝트 일정과 개발 일정 테스트 코드는 개발 일정은 지연 요소가 될 수 있더라도 프로젝트 일정은 단축 요소라고 생각합니다. 왜에 대해서는 아래에 계속해서 얘기해 보겠습니다. 왜 지연요소라고 인식하는가? 코드를 타이핑(코딩) 하는 ..