일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- spring6
- Pay
- MSA
- spring scheduler
- 값객체
- java17
- kakao
- springboot
- armeria
- spring caching
- ifkakao
- 바운디드컨텍스트
- 애그리거트
- spring-web
- Redis
- springboot3
- Kotlin
- mongo
- 신입
- Conference
- 개발자
- ddd
- docker
- Spring
- zuul
- MongoDB
- IDDD
- springcloud
- 반버논
- webframework
- Today
- Total
목록분류 전체보기 (67)
Easy Understanding
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/yrPo7/btrvdvoOodW/aQb9DTlEaNXL1EBnQDc5X0/img.jpg)
DDD의 가장 큰 장점 중 하나는 특정 아키텍처의 사용을 요구하지 않는다는 점이라고 한다. 하지만 책을 읽고 공부를 하다보면, 사실상 DDD에서 선택할 수 있는 괜찮은 아키텍처는 결국은 몇개 안 된다. 가장 간단한 것부터 순서대로 정리해 볼 것이다. 1. Layered Architecture 레이어드 아키텍처는 패턴계에서는 할아버지 같은 존재다. 이름 그대로 프로그램 내에서 계층을 나누는 설계 방식이다. 스프링의 예시가 가장 대표적이다. Controller - Service - Domain - Repository 위와 같은 개발 방식은 레이어드 아키텍처의 대표적인 예시다. 의존의 방향성은 오로지 위에서 아래로만 내려간다. public class UserController{ @Autowired privat..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cSvnOs/btruWjCyhes/wY9uQO4YxDNDLavZzhmKIk/img.jpg)
이전까지는 DDD의 도메인 / 컨텍스트를 어떻게 클래스로 구현하는지 정리했다면, 이번에는 이런 도메인 객체들을 이용하는 방법과 도움이 되는 요소들에 대해서 간단하게 정리하려고 한다. 여러 도메인 로직을 엮거나 변환하는 등 도메인 로직을 조작하는데 활용하는 '도메인 서비스' 실제 사용자의 유스케이스, 유저 인터페이스 로직을 구현하는 '어플리케이션 서비스' new로 객체를 생성하지 않고 대리 생성을 담당하는 메서드인 '팩토리' 그리고 이런 것들을 어떻게 자바 '패키지'로 구분하는지 에 대해서 정리해보았다. 이전에는 애그리거트 내부에서 도메인 로직을 구현했으니, 이번에는 위의 4가지 방법들을 이용해서 도메인 로직을 외부에 제공하는지까지 확인하게 될 것이다. 1. 도메인 서비스 DDD의 Service는 스프링에..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/tIxyP/btrtLVP4Z3k/50zNLBkRRBd5x7FEGKkmU1/img.jpg)
지금까지 DDD 설명에서는 도메인이라든지 바운디드 컨텍스트라든지 개념적인 것들을 다뤘다면, 이제부턴 실전 코딩이다. 데이터 중심의 개발에서 DB에 대응하는 Class들을 만들었던 것처럼, Domain에 대응하는 Class들을 만드는 과정이 필요하다. 이제부터는 각 도메인들을 Class로 표현해보기 위한 개념과 코드를 구경할 차례다. 1. 엔터티(Entity) @Entity public class Movie { @Id private Long id; private String name; private Long playTimestamp; private String directorName; ... public void changeMovieName(){ ... } public void fireAndHireNewD..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bHz8iF/btrs8RgEl1C/GJ83eyktgl4Cm5OcWLZv9K/img.webp)
사실 재작년(2020) 말에 자바에 대한 리포트를 둘러보다가 흥미로운 게 있어서 공부할 겸 정리를 했었다. (https://appleg1226.tistory.com/10?category=891724) 2020년 3분기 자바 Trend. 어떤 기술들이 인기 있을까? 요새 자바에 대해서 좋은 정보를 얻을 수 있는 커뮤니티가 어디없나 찾아보다가, 영어로 된 커뮤니티 중 좋은 곳을 찾았습니다. InfoQ라는 곳이고 각종 가이드, 기사, 팟캐스트 등을 이용해서 기 appleg1226.tistory.com 마침 2022년 1월에 InfoQ에 같은 주제로 새로운 Report가 올라온 것을 확인하고, 그 사이에 어떤 점들이 많이 바뀌었을지 궁금해서 쭉 둘러보았다. https://www.infoq.com/articles..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/3ME2L/btrs68cN7zr/JbegMlTo6SJmz0IQ20apn1/img.jpg)
도메인과 바운디드 컨텍스트는 무엇이길래 이전 글에서도 이야기 했지만, DDD는 용어부터가 우리가 알고있는 것과 다르고, 익숙해져야 할 것들이 많다. 특히나 바운디드 컨텍스트(Bounded Context)에 대해서는 초반에 감이 잘 오지 않았던 것 같다. 시작전에 간단하게 요약을 해보자면, DDD는 전략적(Strategic) 설계와 전술적(Tactical) 설계로 나뉜다. - 전략적 설계: 개념적으로 도메인과 바운디드 컨텍스트를 정의하고, 유비쿼터스 용어를 정리하는 부분 - 전술적 설계: 세부 아키텍처와 코드의 구현과 관련된 부분 이라고 보면 되는데, 이 글에서 다루는 것이 전략적 설계의 핵심적인 부분이라고 보면 된다. 조금씩 다르지만 대략적으로 아래의 순서로 전략적 설계가 진행된다고 보면 된다. 1. 도..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/OoIxi/btrsveZkyKs/inVPRi0z003SjUGlWQxEU1/img.jpg)
참고로 스터디는 다음의 책을 통해서 진행했다. DDD 간단 소개 우선 DDD(Domain-Driven Design)에 대해서 간단하게 소개를 하자면 다음과 같다. DDD는 단순한 코딩/아키텍처 구성 방법이 아니다. 즉 패턴과 설계와 아키텍처를 모조리 합친 그 무언가 개발의 새로운 패러다임이다. DDD는 기존의 설계 방식과 개발 방식을 새로운 관점으로 보게 해준다. 개발을 하면서 부딪히는 문제는 여러 가지가 있지만 크게 두 가지로 나눌 수 있다. 사용자(고객, 회사 등)에서 제시하는 복잡하고 자주 변화하는 요구사항 성능이나 협업에서 발생하는 기술적인 어려움 DDD는 보통 첫 번째 원인 해결에 초점을 맞춘 방법론이다. 기획자(도메인 전문가)들의 요구사항을 개발 언어로 변환하는 '비효율'을 최대한 '효율'적으..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bqGi5T/btroRYMx6Nx/5a6eLQQ7daMtJRkTOqS4K1/img.png)
다행히 취준의 2년이 딱 채워지기 전에 카카오(entertainment)라는 원하는 회사에 개발자로 취업을 하게 되었다. 취업을 하게 된 김에 최근 개발자 신입 채용에 대해서 내가 느꼈던 점을 정리해 보았다. 주로 내가 어려웠던 것들, 느꼈던 것들에 대해서 고민을 정리해 보았다. 최근 개발 채용 시장에 대한 생각 최근에 개발자에 대해서 취준생들의 인기가 참 많다는 이야기를 들었다. 각종 개발자 교육 기관은 수료생들이 엄청나게 많으며, 광고에도 개발자 교육 관련 광고가 엄청나게 많다. 내가 시작할 때만 해도 개발자에 대한 인기가 이렇게 많지는 않았는데, 이게 다 최근 몇 년 안에 일어난 일이다. 몇 년 전만 해도 개발자 관련된 교육이나 활동이 그렇게 많지가 않았다. 내 지인들은 큰 개발 경험 없이도 학교 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/vaTIy/btrmYdEGuN2/0WFynrcNqMF4uUHoYJk8RK/img.png)
이번에도 카카오의 푸시를 받고 있는 라이언과 춘식이 이모티콘과 함께 if kakao 2021을 참여해보았다. 1. 시청한 세션과 간단한 정리 사실 세션들은 보고나서 몇 일이면 상세한 내용들이 잊혀지는 일들이 많다. 이전에 개발을 하다가 막혔을 때, 어디 컨퍼런스에서 보았던 내용인 것은 생각이 났는데 도대체 어떤 세션이었는지 생각이 나지 않았던 경험이 있었다. 그때 생각했던 것이 간단하게 키워드로 정리해 놓기만 하자는 것이었다. 주로 내가 관심있는 분야들 위주로 보았기 때문에 ML, Infra 일부, App 개발, 블록체인 쪽은 패스했다. 스마트 메시지 서비스 개발기(BE) 스마트 메시지는 카카오톡에서 최적의 사용자에게 최적의 소재로 광고를 전달하도록 하는 서비스라고 한다. 전반적인 설계에 대한 내용이 도..