일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 값객체
- spring caching
- 신입
- springboot
- Conference
- spring6
- kakao
- 반버논
- docker
- 개발자
- java17
- mongo
- zuul
- Pay
- Spring
- springboot3
- Redis
- spring-web
- MSA
- armeria
- Kotlin
- springcloud
- 바운디드컨텍스트
- IDDD
- ddd
- spring scheduler
- MongoDB
- webframework
- 애그리거트
- ifkakao
- Today
- Total
목록Spring (11)
Easy Understanding
DDD 학습을 하다보면 전략적 패턴(도메인을 도출하고 정의하는 과정)에는 어느 정도 일관된 결론이 있는 것을 확인할 수 있다. 각종 DDD 책이나 블로그 들에서 해당 과정은 타협할 수 없는 과정으로 여겨지고 있고, 실제로 어떤 문서를 읽어도 내용들이 크게 다르지는 않다. 하지만 전술적 패턴(실제로 코드를 작성하고 아키텍처를 결정하는 과정)에 대해서는 딱히 일관성이 없다. 왜냐하면 DDD에서는 코드를 작성하는 방법에 대해서 정답이 없다고 애초에 선언되었기 때문이다. 실제 DDD 예제 코드들을 깃헙에서 확인해보니, 정말 제각각의 다양한 형식의 코드 스타일들이 존재했다. 반 버논의 iDDD 책에서 제공하는 DDD에 대한 방법론은 많은 인사이트를 제공해주었지만, 실제로 고민해보고 코딩해보는 과정이 필요하다고 생..
최근에 Spring 프레임워크를 스터디하면서 웹 프레임워크 전반에 대해서 관심을 갖게 되었다. 현재 회사에서 사용하고 있는 프레임워크가 주로 공부한 Spring이 아닌 Node.js의 Nest.js인 데다가, 이전에 Django(Python), Gin(Go), Express.js(Node.js) 들을 사용해 보았기 때문에 이런 것들을 종합해서, 프레임워크 전반적으로 어떤 점들이 비슷하고 어떤 점들이 다른 지를 알아보고 싶어졌다. 그래서 앞으로 포스트에 다음을 정리해보려고 한다. 1. 웹 프레임워크의 두 가지 분류 2. 웹 프레임워크의 핵심 구성요소들 글을 쓰면서 참고한 프레임워크의 목록은 다음과 같다. 1. Spring(Java/Kotlin) 2. Express.js(Javascript/Typescrip..
1. module 분석 스프링 프레임워크에서 web과 관련된 모듈은 총 네 가지가 있다. 이렇게 네 가지이다. websocket 을 제외한 세 가지를 알아보면 다음과 같다. 1) spring-web spring-web 모듈은 web 서버를 구축하는 데 있어서 공통적인 역할을 하는 클래스들이 모여있는 곳이다. 그러다보니 각종 인터페이스들이 많이 존재한다. 예를 들면 request, response에 대한 인터페이스 같은 것들이다. 아니면 Exception, Filter, Cors 같은 것들과 관련된 기능들이 들어있다. 여기에 있는 클래스들은 나머지 webmvc, webflux, websocket 에서 공통적으로 사용될 것이다. 2) spring-webmvc spring-webmvc 모듈에는 'servlet..
계기와 결심 라이브러리나 프레임워크를 사용하는 것은 개발자에겐 일상이다. 시간이 지날수록 프레임워크들은 편리하게 발전하고 있으며, 그 때문에 우리는 비즈니스 로직을 처리하는 것에만 집중하면 된다. 책 하나 정도만 파보면 사용법을 익히는 건 어려운 일은 아니다. 그런데 그러다가 가끔 코딩하다 문제가 생겼을 때 혹시나 라이브러리를 한 번 까보면 신세계가 펼쳐진다. 도대체 내가 보고 있는 코드는 다른 차원의 코드인가 하는 생각이 든다. 그러다보니 코드에 대해서 두려움이 해소가 되지 않는다. 나는 예전부터 자기가 필요한 프로그램을 만드는 사람이 신기했다. 도대체 이 사람은 이런 프로그램을 어떻게 만들었을까라는 궁금증이었다. - VSCode에 있는 플러그인도 직접 개발한다고 하는데 도대체 어떻게 개발했을까? - ..
스프링 Core 문서를 읽으니 스프링이 어떤 기능을 제공하는지는 확실히 알게 되었다. 그렇지만 이번 스터디의 목표는 IoC 컨테이너의 구현을 확실히 확인하자는 것이었기 때문에, 다음 목표는 코드로 잡고 스프링 github 내용을 다운 받아 IntelliJ를 이용해서 분석하게 되었다. 문서의 흐름과 비슷하게 다음의 순서로 코드를 분석해보았다. 1) Spring BeanFactory 가 구현된 spring-beans 모듈 정리 2) Spring ApplicationContext 가 구현된 spring-context 모듈 정리 3) 그 중에서 핵심이 되는 클래스들의 내부 구현 확인 spring-beans 모듈 구성 beans 패키지: Java Beans를 다루기 위한 클래스들이 놓여있다. - factory(*..
최근에 스프링 코드를 보면서 IntelliJ 를 적극 활용하면서 코드를 분석해 보았는데, 역시나 Ultimate 버전이라서 그런지 활용할 수 있는 것들이 많았다. 다음은 IntelliJ에서 코드를 분석하기 위해서 사용할 수 있는 몇 가지를 소개한다. 아마 Ultimate에만 있는 기능이 몇 가지 있을 것이다. 1. 좌측아래 있는 Structure 탭을 이용하기 클래스가 길어질 경우 클래스 내부의 메서드/프로퍼티 등을 빠르게 파악할 수 있다. 2. Hierarchy(control h)를 이용하여 상속관계를 파악하기 맥 기준 원하는 변수에다가 '컨트롤 h'를 누르면 해당 클래스의 상속관계를 보여준다. 상속관계를 파악하기에 유용하다. 3. Method/Class 우클릭 후 Find Usages를 눌러서 해당 ..
초보 주의 예전 개발 경험이 적을 때 작성한 거라서 지금 저의 시점으로 보니 너무 도움이 안 되는 글이네요... 솔직히 지우고 싶으나 풋풋함을 기억하기 위해서 남겨둡니다. (심지어 지금 결제 도메인 개발 중이라 더 부끄러움) 이제 무엇을 더 적용해봐야할까 아직 시스템엔 추가해야 하는 기능과, 개선하고자 하는 것들이 남아 있습니다. 제가 이번에 적용하려고 하는 것은 1. 최근에 기록된 거래들만 빠르게 확인할 수 있는 캐싱 시스템 2. 하루 내에 송금을 받지 않았을 경우에 송금 취소하고 원래대로 돌려놓기 위와 같은 두 가지 기능을 기존 시스템에 보완해볼 예정입니다. 간단한 캐싱 적용해보기 캐싱은 자주 사용되는 데이터베이스에 대한 빠른 접근을 위해 사용합니다. 여기에서는 거래 내역을 조회하는 것에 캐싱을 적용..
초보 주의 예전 개발 경험이 적을 때 작성한 거라서 지금 저의 시점으로 보니 너무 도움이 안 되는 글이네요... 솔직히 지우고 싶으나 풋풋함을 기억하기 위해서 남겨둡니다. (심지어 지금 결제 도메인 개발 중이라 더 부끄러움) MSA, Spring Cloud란? MSA라는 단어는 많이들 들어보셨을겁니다. Micro Service Architecture 를 줄여서 MSA라고 합니다. MSA는 기술/기법으로 여겨지기도 하지만, 단어 자체로는 어떠한 개념을 뜻합니다. Micro: 작게 Service: 서비스를 Architecture: 구성하라 저는 위의 느낌으로 MSA를 이해했습니다. 기존에 하나의 서비스에 여러가지를 넣어서 개발하던 시기와 다른 개발 방식이죠. 저의 세 가지 프로젝트들(조회/결제/송금)을 만들..