개발과 문학 그리고 문화
-
헥사고날 아키텍처를 사용해야하는 이유?카테고리 없음 2022. 11. 30. 00:43
현재 대용량이지만 사용자와 트래픽이 많지 않은 빅 데이터 서비스를 개발하고 있다. 새롭게 프로젝트를 만들어감에 따라 프로젝트에 적용할 아키텍처에 대해 고민을 하고 있는데, 도메인의 성격이 나름 구분이 되어 각각의 도메인별 모듈이 나눠지게 되고, 이용자와 트래픽이 많지 않기 때문에 특정 도메인에 필요한 데이터만 많고 나머지는 데이터가 많지 않다. 따라서 모듈은 분리되었으나 DB는 통합된 모놀리식과 MSA의 중간형태인, 멀티 모듈 프로젝트가 만들어진다. 아무튼, 이런 배경에서 각 모듈 내부는 헥사고날 아키텍처를 베이스로 하려고 하는데, 헥사고날을 처음 접하고, 아주 심플한 기능을 가진 모듈의 기능을 생각하였을때 헥사고날 아키텍처의 장점은 무엇인가? 꼭 필요한가? 에대 한 고민을 갖게 된다. 헥사고날? 요즘..
-
DDD START개발/책 2022. 9. 13. 02:20
2022-09-12 chapter 1 도메인 시작 이 챕터는 도메인 모델과, 도메인 모델을 엔티티와 밸류로 분류하여 개념을 사용하고 있다. DDD와 MSA에 대한 시도로 블로그 등을 통해 접했던 내용이지만 아주 쉽게 설명한 글을 통해 다시 한 번 정리할 수 있었다. 또한, 작년 우테코 PRO에서 객체지향코드를 강조하며 객체에 불명확한 set 메서드 네임에 대한 이유를 다시 보게 되면서 반가운 감이 있었다. 이를 인지한 상태에서 메서드를 정의할 때, 엔티티에서는 set이 오히려 적절하다고 생각하는 경우가 많아 예시처럼 anti pattern, 피해야하는 규칙을 생각하기 보단 우선적으로 고려하는 것에 따르는게 좋다고 생각하고 있다. 네이밍 같은 경우 책에서 얘기하는 의미 전달이다. 또한 밸류 타입에서 불변객..
-
스프링 핵심 원리 - 고급편개발/강의 2022. 5. 21. 23:59
몇 년간 사용해오면서 익숙하면서도 아직 모르는 부분에 대한 불안과 갈증으로 고급편을 수강하게 되었다. 2022-05-21 예제 만들기 아주 간단한 로그 만들기 강좌로 이 강의를 들으면서 느낀 점은 매번 느끼는 거지만 김영한님은 친절하게 동작원리를 설명하신다는 거다. (예를들어 @Service, @Repository를 사용하면서 해당 어노테이션에 @Component가 있는 것을 보여주며 어떻게 컴포넌트스캔에 감지될 수 있는 것을 설명하는 등) 처음 스프링을 접하는 사람도 아주 간편하게 프레임워크와 돌아가는 구성을 그려보며 이해할 수 있지 않을까라는 생각이 들었다. 그리고 우연찮게 얻은 꿀팁은, 에러가 있을때 f2키를 누르면 해당 에러로 바로 이동하는 것이다. (스크롤바를 통해 해당 위치 부근으로 바로 가거..
-
만들면서 배우는 클린 아키텍처개발/책 2022. 4. 20. 23:31
1독(2022-04-20) 전통적으로 사용하고 있는 계층형 아키텍처와 비교하면서 육각형 아키텍처에 대한 설명을 중점적으로 다루고 있다. 이 책에서 마음에 들었던 점은 why로 시작하여 how로, 물음표로 시작하여 자연스럽게 느낌표로 끝나도록 서술되어 있다. 또한, 적절한 그림과 예제코드로 이해를 돕고 있다. 이미 현재 업무에서 MSA와 헥사고날 아키텍처를 도입하고 있어 익숙한 부분이 많았지만 읽으면서 좀 더 호기심을 갖고 문제를 깊게 생각해볼 수가 있었다. 또한, 단위, 통합, 시스템 테스트 코드를 고민하며 적절하게 작성하려고 했기에 테스트코드에 대한 예제는 앞으로의 고민을 많이 줄여주는데 큰 도움이 된 것 같았다. 이 책에선 헥사고날의 유즈케이스, 어댑터, 도메인 등의 역할에 대해서도 잘 설명하고 있다..
-
spring에서 private 테스트는 어떻게 할까? (feat. ReflectionTestUtils, kotlin)개발/Spring 2022. 3. 27. 23:38
ReflectionTestUtils.getField(target(Object or class), fieldName) as fieldType 테스트코드를 짜다보면 테스트 후 private field가 제대로 바꼈는지 확인하거나 private fun 을 확인하고 싶을때가 있다. 이런경우 spring에 내장되어있는 ReflectionTestUtils 를 사용해서 간단히 테스트를 할 수 있다. https://www.baeldung.com/spring-reflection-test-utils https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/test/util/ReflectionTestUtils.html 예를 위해 ..
-
@Transactional 옵션을 사용하지 않는다면?개발/Spring 2022. 3. 7. 02:21
일단 기본적으로 @Transactional 에서 많이 사용되는 readOnly 옵션의 default 는 false이다. 때문에 서비스레벨에서 해당 메서드의 Transaction 관리를 하려고 할때 대부분 @Transactional만 붙이고 있는 것이다. 그렇다면 아무런 옵션도 붙이지 않고 jpa를 사용한다면 어떻게 될까? 우선, spring-data-jpa에서 제공하는 JpaRepository의 기본 구현체는 SimpleJpaRepository이다. 내부를 들여다보면 위에서 알 수 있듯 구현 메서드들의 기본 값은 readonly를 띄고 있다. 이제 C-R-U-D에 대해 알아보자. Create 저장하는 메서드에 대해서는 Transactional옵션을 추가 선언하고 있다. 즉 위 default처럼 reado..
-
소프트웨어 장인개발/책 2022. 3. 6. 22:56
(2022-02-12, 2022-03-06) 읽어야지 마음 먹었지만 상당히 늦게 책을 완독하게 되었다. 개발자를 택한 순간부터 좋은 개발자가 되길 꿈꾼다. 이 책은 현실적으로 더 좋은 개발자가 되기 위한 길잡이가 되어준다. 1. 장인 정신을 갖고 스스로의 기술을 발전 시키고 2. 좋은 동료들과 함께 더 좋은 개발 문화를 만드는 것 이 두가지만으로도 적어도 스스로에게 떳떳할 수 있지 않을까 생각된다. 이 책을 읽고 얻은 정보로 다시한 번 다짐한 나의 생각을 정리하자면 1. 커리어의 주인은 나다. 예전부터 이런 생각을 하고 기회가 있으면 활용하되, 없어도 스스로가 주도적으로 행하려는 것에 변화가 없기에 남길 말은 없다. 2. 아니오 라고 말하기. 이것 또한 예전부터 노력하던 습관이다. 또한, 최근 팀원들로 ..