본문 바로가기

분류 전체보기

(99)
2022/02/21 TIL 클린 아키텍처 23장 : 프리젠터와 험블 객체 험블 객체 패턴이란? 테스트하기 어려운 행위와 쉬운 행위를 분리하기 쉽게 하는 방법 테스트하기 어려운 행위는 험블 객체로 옮기고 나머지 테스트하기 쉬운 행위를 옮긴다. 단위 테스트를 하다 보면 복잡도가 높아 어려운 경험이 있는데 험블 객체에 테스트하기 어려운 부분을 옮긴다는 아이디어가 정말 좋다고 생각했다. 클린 아키텍처 24장 : 부분적 경계 Service, ServiceImpl이 미래에 필요한 아키텍처 경계를 위한 무대를 마련한다는 점은 명백하다. 아직도 관습적으로 Interface를 만드는 것에 대해서는 동의하지 않는다. 스스로 납득할만한 근거를 아직 못 본 것 같다. 아키텍처 경계가 언제, 어디에 존재해야 할지, 경계를 완벽하게 아니면 부분적으로 구현..
2022/02/19 TIL 클린 아키텍처 22장 : 클린 아키텍처 육각형 아키텍처를 포함한 대부분의 아키텍처의 목표는 관심사의 분리다. 요즘 육각형 아키텍처에 대한 의견이 많이 들리는 것 같은데 주요 목표는 관심사의 분리라는 것을 알게 되었다. 엔티티는 전사적인 핵심 업무 규칙을 캡슐화한다. 외부의 무언가가 변경되더라도 엔티티가 변경될 가능성은 지극히 낮다. 핵심 업무 규칙을 이 서비스 레이어에 있는 경우가 많다. 앞으로 개발할 때 외부로부터 의존성을 최대한 줄이기 위해 엔티티와 가깝게 하고 싶다. 유스 케이스는 특화된 업무 규칙을 포함한다. 엔티티가 자신의 핵심 업무 규칙을 사용해서 유스 케이스의 목적을 달성하도록 이끈다. 유스 케이스의 구현은 엔티티에 있어야 한다. 원은 네 개여야만 하나? 그렇지 않다. 더 많은 원이 필요할 ..
2022/02/18 TIL Spring Boot 3.0.0 M-1 SpringBoot 3.0부터는 Java17, Spring Framework6 이상을 사용해야 한다. 추가적으로 알아두면 좋을점은 Java EE API에서 Jakarta EE(Jakarat EE 9)로 변경한다는 점이다. 참고1 참고2 Jakarta EE 오라클이 JAVAEE8 릴리즈를 마지막으로 비영리 단체인 이클립스 재단에 JAVA EE로 프로젝트를 이관했습니다. 자바 상표권은 계속 오라클이 가지고 있기 때문에 네임스페이스를 Jakarta로 변경했습니다. 참고3 참고4 JAX-RS Java API for RESTful Web Services의 약자로 경량화된 방식을 제공하는 자바 API 이며 JavaEE에 JAX-RS 라는 사양이 들어있다. (Jakarta EE..
2022/02/17 TIL 스터디 자료 준비 일급 컬렉션에 대해 발표를 하게 되어 발표자료를 준비하게 되었다. 서적이나 강의에서 접해보지 못해 주로 블로그 글을 참고해서 아쉬운 부분이 있었는데 직접 구현해보니 이해도가 올라간 기분이었습니다. 클린 아키텍처 17장 : 경계 선긋기 경계선을 긋는 행위는 결정을 늦추고 연기하는 데 도움이 된다. 책에서는 데이터베이스를 결정하는 행위를 상당기간 미루고 서비스를 개발했고, 미루는 동안 디비와 관련된 문제들을 다룰필요가 없어 효율적으로 일했다는 예시가 나온다. 공감이 가는 부분이었다. 사실 백엔드 개발을 할 때도 당장 디비가 필요하지 않고 stub을 사용해서 만들고 추후에 DB와 연동하면 효율적이기 때문이다. 클린 아키텍처 18장 : 경계 해부학 서로의 영역에 침범하지 않은 채 자신만의 컴포..
2022/02/16 TIL UPDATE, DELETE with join SQL문을 작성할 때 join을 사용해서 UPDATE와 DELETE를 사용하고 싶은 경우가 있는데 막상 작성해보니 작성이 잘 되질 않아 이번 기회에 정리하게 되었습니다. UPDATE UPDATE Table1 T1 JOIN Table2 T2 on T1.id= T2.t1_id SET T1.name = 'change name' WHERE T1.city = 'seoul' DELETE DELETE T1 FROM Table1 T1 LEFT JOIN Table2 T2 ON T1.id = T2.t1_id WHERE T2.id = 5 Java Study : 일급콜렉션 일급 콜렌션에 대해 정리하게 되는 계기가 되었습니다. 일급 컬렉션을 잘 사용하기 위해서는 DDD에 대한 이해가..
2022/02/15 TIL Wrapper Class 정리 이번주 스터디 주제 중 Wrapper Class가 있었고 간략하게 정리를 했다. 왜 필요한지 한번 더 생각해 보게 되어 좋았고, 아는 내용을 제대로 알고 있는지 생각해 보게 되는 좋은 계기였다.
2022/02/14 TIL 클린 아키텍처 16장 : 독립성 목표는 즉각적인 배포이다. 오늘도 회사에서 작업 단위가 큰 PR을 요청받았는데 컨트롤하기 힘든 conflict가 발생해서 힘들었던 경험이 있다. 대화를 하며 어떻게 해결할 수 있을지 얘기를 했었다. 뛰어난 아키텍트라면 변경을 예측하여 큰 무리 없이 반영할 수 있도록 만들어야 한다는 점이다. 레거시 코드를 수정할 때 유연하지 못해 불편함을 느꼈지만, 오래전에 작성된 나의 코드를 봐도 그런 경험이 있다. 독립성을 가진 영역을 잘 나누면 유연성이 올라간다는 것을 알게 되었으니 이를 천천히 실천해보고 싶다. AWS Elastic Beanstalk 배포 설정 배포 할 때 몇 가지 옵션이 있는데 오늘 트래픽 분할 이라는 방법을 알게 되었다. 이는 배포하는 동안 기존의 인스턴스 구성을..
2022/02/13 TIL 마틴 파울러의 Continuous Integration From this I learned a common story of software projects: integration is a long and unpredictable process. 마틴 파울러도 처음으로 큰 프로젝트를 처음 접했을 때 통합이란 것이 오래 걸리고 예측할 수 없는 과정이라고 생각했다. The term 'Continuous Integration' originated with Kent Beck's Extreme Programming development process, as one of its original twelve practices CI란 용어는 켄트 벡의 익스트림 프로그래밍에서 나온 용어라는 것을 알게..
2022/02/12 TIL 클린 아키텍처 14장 : 컴포넌트 결합 개발보다 통합에 드는 시간이 늘어나면서 팀의 효율성도 서서히 나빠진다. git-flow 보다 github-flow 같은 것들을 선택하는 사람이 늘어나는 이유인 것 같다. 실제로 회사에서 develop 브랜치를 없애며 생산성이 올라가는 것을 경험했기에 공감 가는 내용이었다. 순환 참조의 문제성 항상 동일한 시점에 배포해야 한다. 테스트가 어려워진다. 어떤 순서로 빌드해야 하는지 파악할 수 없다. (사실상 올바른 순서가 없다.) 해결 방법 의존성 역전 새로운 컴포넌트 만들기 아직 순환 참조 문제로 어려움을 겪었던 적은 없다. 하지만 이번 기회에 다시 한번 순환 참조에 대해 생각해 볼 수 있어서 좋았다. 백발의 개발자를 꿈꾸며 시간이 없는지 실력이 없는지 생각해보자 시간..
2022/02/11 TIL The RED : Scope, Closure Scope : 변수에 접근할 수 있는 범위 Lexical scope : 중첩 함수가 있을 때 내부 함수에서 외부 함수 변수에 접근할 수 있다. Closure : lexcical scope를 포함하는 함수 예제) @Test void test_closure(){ Supplier supplier = getStringSupplier(); assertThat(supplier.get()).isEqualTo("HelloWorld"); } private Supplier getStringSupplier() { String hello = "Hello"; Supplier supplier = () -> { String world = "World"; return hello + wor..