General7 [DDD] 값객체와 엔티티, 도메인 서비스 도메인 주도 설계란?- 도메인 : 프로그램에 쓰이는 대상 영역. - 도메인 모델 : 현실을 일반화하여 추상화하는 것. 이 과정에서 도메인에 맞게 필요한 개념만 취사선택하는 것이 필요하다. - 도메인 객체 : 도메인 모델을 구현하여 표현한 것. - 도메인 주도 설계 : 도메인 지식에 초점을 맞춰 개발하는 것. 초점을 맞춘다는 것은 도메인을 이해하고 도메인이 직면한 문제를 해결하는 것에 유용한 것을 프로그램에 적용하는 것. - 도메인 주도 설계의 장점: 프로그램을 오랜기간 운영하며, 변화가 필요할 때, 더욱 쉽고 유연하게 대처할 수 있음. 값 객체1. 정의 도메인 상의 값을 객체로 표현한 것 2. 이점: 1. 표현력이 증가한다. 하나의 값이 여러 부분으로 이뤄진 경우, 각각이 무엇인지 코드에서 명시할 수 있.. 2023. 6. 3. MSA(Micro Service Architecture) 이해해보기 목차 1. MSA란? 2. 왜 MSA를 사용하는가? 3. 어떻게 MSA를 도입하는가? MSA란? 마이크로서비스 아키텍처는 소프트웨어를 여러 개의 작은 독립적인 서비스로 분할하는 소프트웨어 아키텍처 스타일입니다. 이것은 아래의 특징이 있습니다. 서비스 간에 네트워크 통신을 한다. 도메인 중심으로 설계한다. 서비스 별 최적화된 기술을 독립적으로 사용 가능하다. 서비스 크기는 작아지고, 독자적 개발 / 배포/ 확장/ 관리가 가능하다. 왜 MSA를 사용하는가? Monolithic 구조의 단점들이 Business에 미치는 부정적인 영향이 크고, MSA로 얻을 수 있는 이익이 이 단점들 보다 클 경우에 사용합니다. Monolithic 구조의 단점은 다음과 같습니다. 복잡성으로 인한 관리의 어려움: 하나의 애플리.. 2023. 5. 22. [Google Java Convention] 구글의 자바 컨벤션 정리 본 글은 아래 구글의 문서를 정리한 것입니다. Google Java Style Guide 1 Introduction This document serves as the complete definition of Google's coding standards for source code in the Java™ Programming Language. A Java source file is described as being in Google Style if and only if it adheres to the rules herein. Like ot google.github.io Java Convention Source file 파일 명 대소문자를 구별하는 최상위 클래스 이름 뒤에 .java를 붙인다. 특수 문자 .. 2023. 1. 26. 객체지향 설계 원칙 - SOLID 들어가며 벌써 우테코 프리코스 3주 차입니다. 코드스테이츠의 메인 프로젝트와 겹쳐서 바쁜 하루하루를 보내고 있지만, 바쁜 건 좋은 거라고 생각합니다ㅎㅎㅎ 아무튼 이번주의 주제는 클래스의 분리와 단위 테스트입니다. 둘 다 하루아침에 되는 것이 아닐 것을 알지만, 제대로 개념들을 생각하며 아직 진행해본 적이 없어, 이번 기회에 클래스의 분리에 대해서 서칭을 해보았습니다. 찾다 보니, SOLID라 불리는 객체지향 설계 원칙이라는 개념을 알게 되어 , 우선 공부하며 정리해두고 적용하는 연습을 하려 합니다. WHAT is SOLID? SOLID란 로버트 마틴이 2000년대 초반에 명명한 객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙을 마이클 페더스가 두문자어 기억술로 소개한 것이라고 합니다. 이 원칙의 목.. 2022. 11. 14. TDD(테스트 주도 개발) 시작하는 방법 들어가기 우아한테크코스에 지원했습니다. 합격을 위한 1차 관문인 PreCource를 진행하고 있는데, 2주 차 과제에서 테스트 코드를 작성하는 요구사항이 생겼습니다. 테스트를 해보라고 하니, 말로는 많이 들었던 TDD를 시도해볼 수 있는 좋은 기회가 될 것 같아, TDD에 대해서 찾아보았습니다. WHAT is TDD? TDD는 Test-Driven Development의 약자로, 테스트 주도 개발이라고 합니다. 간단하게 말하면, 실제 코드를 작성하기 전에 테스트 코드부터 작성한 후, 처음에는 당연히 실패할 (아직까지 작성한 코드가 없기 때문에) 테스트를 조금씩 성공시켜가며 개발을 하는 개발 방법입니다. 위키에 따르면 주목받은 지 얼마 되지 않은 TDD가 사실은 1999년에 시작됐다고 합니다. 신기하네요ㅎ.. 2022. 11. 6. [로깅 전략] 로그는 어떻게 남겨야할까? (중앙집중식 로깅) 로그를 어떻게 남겨야할지 찾다가 넷마블 기술 블로그에 좋은 자료가 있어 간략하게 기록을 남겨봅니다. 넷마블 기술 블로그 왜 로그를 남길까? 로그는 서비스의 이상현상을 파악하고 발생원인을 찾기 위해 남깁니다. 또한 요즘처럼 MSA를 도입하며 서비스가 커지고 복잡해지는 상황에서 문제를 파악하기 쉽도록 로그를 남기는 것이 중요합니다. 중앙집중식로깅 기존에는 로컬 서버에 로그를 축적했었지만, 이런 방법으로는 로그 정보에 접근하기가 어렵고, MSA가 등장함에따라 로그가 발생하는 서버의수가 많아지는 어려움이 있었습니다. 이런 문제를 해결하기 위해 중앙집중식로깅이 등장하게 되었습니다. 기본적으로 여러 곳에서 발생하는 로그를 한 곳으로 모아 관리하는 것입니다. 이렇게 되면 로그 정보에 접근하기는 쉬워졌지만, 너무 다양.. 2022. 10. 26. 명령형 코드 vs 선언형 코드 자바를 공부하면서, 함수형 프로그래밍 언어의 인기가 높아지고 있고 객체지향 언어인 자바 진영에서도 이를 적용할 수 있는 Lamda 기술을 도입했다는 것을 배웠습니다. 그때는 그냥 그런가보다 하고 넘어갔는데, 최근에 이것이 단순히 어떤 기술이 아니라, 코드를 작성하는 일종의 '스타일'로도 볼 수 있다는 것을 알게되어 상당히 의미있게 다가와서 정리를 하게 됐습니다. 명령형 코드 vs 선언형 코드 명령형 코드는 어떻게 일을 할지 'HOW'에 집중하는 것이고, 선언형 코드는 'WHAT'에 집중하는 것입니다. 간단하게 코드 예제로 살펴보겠습니다. //명령형 public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5}; int min = arr[0]; .. 2022. 8. 25. 이전 1 다음