반응형 전체 글98 10. ArchUnit 으로 아키텍쳐 검사하기 서비스 또는 시스템은 목적에 따라 아키텍쳐를 설계하고 이에 기반하여 구현이 됩니다. 여기서 이야기하는 아키텍쳐란 기능, 조직, 구현에 대한 법칙과 방법을 의미합니다. 깨진 유리창 이론도 있듯이 초기에 아키텍쳐가 잘 설계되어 있다 하더라도 시간이 지남에 따라 점점 망가질 수 있습니다. 이를 최대한 방지하기 위해 아키텍쳐적인 부분에 대해서도 검사를 할 필요성이 있으며, 그 방법 중에 하나가 ArchUnit 이라는 라이브러리를 활용하는 것입니다. 이번 글에서는 ArchUnit 을 활용하여 아키텍쳐 검사를 해보도록 하겠습니다. Pull request: https://github.com/kdohyeon/crypto-labs/pull/18 의존성 추가 라이브러리 버전은 현재 기준 최신 버전인 1.0.1 을 사용했다.. 2023. 4. 5. Port 8080 was already in use (feat. 8080 포트 죽이기) 스프링부트 어플리케이션을 시작하려고 했더니 Port 8080 was already in use 에러가 나면서 시작이 안되는 경우가 발생했습니다. {"timestamp":"2023-04-03 14:30:01.575","@version":"1","message":"\n\n***************************\nAPPLICATION FAILED TO START\n***************************\n\nDescription:\n\nWeb server failed to start. Port 8080 was already in use.\n\nAction:\n\nIdentify and stop the process that's listening on port 8080 or configur.. 2023. 4. 3. 9. 단위 테스트 작성하기 (feat. JUnit5 + MockK) 어떤 기능을 구현한다는 것은 테스트까지 작성이 되어야 완성이라고 이야기할 수 있습니다. 그만큼 테스트는 중요한데요. 이번 시간에는 JUnit5 기반으로 단위 테스트를 작성하고 코틀린 스타일로 Mock 객체를 만들 수 있는 MockK 프레임워크를 사용해볼 예정입니다. Project issue: https://github.com/kdohyeon/crypto-labs/issues/15 Pull request: https://github.com/kdohyeon/crypto-labs/pull/16 의존성 추가 단위 테스트 작성을 위해서는 spring-boot-starter-test 모듈을 불러온다. build.gradle.kts 에 추가해주면 된다. testImplementation("org.springframe.. 2023. 4. 2. [번역] 반복적인 DTO-Domain 변환 처리하기 (feat. Kotlin Flow) 클린 아키텍처를 사용해 보면서 큰 단점으로 느꼈던 부분이 각 계층간 반복적인 DTO 변환이었습니다. 이 단점을 어떻게 해결할 수 있을까 라는 고민을 가지고 있었는데, 약간의 갈증을 해소시켜 주는 글을 읽게 되어 정리해두고자 합니다. Redundant DTO-domain Mapping in Kotlin Flow 글을 읽고 번역(+ 개인 의견)한 내용입니다. (참고로 오역이 있을 수 있으니, 원문을 참고하시길 권장드립니다.) Intro. 계층을 분리하는 것은 높은 품질의 코드를 작성하고, 에러와 예상치 못한 동작을 방지하기 위한 좋은 관행 중 하나이다. API로 부터 데이터를 조회할 때, DTO 클래스에 결과 값을 파싱하여 받아오게 된다. 이를 Mapper 를 사용하여 Domain 클래스로 변환한다. 다른 .. 2023. 3. 31. 8. JPA 적용하기 이번 시간에는 데이터베이스에서 CRUD 작업을 하기 위한 JPA를 적용해 보도록 하겠습니다. 클린 아키텍처인 만큼 도메인을 만드는 것부터 시작해 보며 이를 DB에 저장하고 조회하는 것까지 해보도록 합니다. Project issue: https://github.com/kdohyeon/crypto-labs/issues/12 Pull request: https://github.com/kdohyeon/crypto-labs/pull/13 Gradle 설정 JPA를 사용하기 위해서는 의존성을 먼저 추가해주어야 한다. 멀티 모듈 환경에서는 필요한 의존성을 주로 각 모듈에 위치한 build.gradle 에서 관리하게 되는데 Entity는 보통 Domain 모듈에서 관리된다. 따라서 Domain 모듈의 build.gra.. 2023. 3. 30. [독서정산] 개발자의 글쓰기 개발자의 글쓰기 이제 막 개발을 시작하는 주니어 단계의 개발자들에게는 많은 도움이 될 것 같은 책이라고 생각한다. 또한 해당 내용을 잘 아는 개발자들도 복습하듯 가볍게 읽을만하다. 당연한 이야기들이지만 중요하고 필요한 이야기들이 많았다. 결국 글쓰기 라는 것도 그 글을 읽을 누군가에게 메시지를 전달하기 위함인 것이고 독자를 생각해서 글을 작성해야 한다. 글을 잘 쓰는 것은 너무 어려운 과정이고 의도적으로 훈련을 해야 한다고 생각한다. 제목 개발자의 글쓰기 - 변수 네이밍부터 릴리스 노트, 장애 보고서, 기술 블로그까지, 프로그래머의 글스기 고민 끝! 저자 김철수 저 출판사 위키북스 발행일 2019년 10월 인상 깊은 문장 (p20) 기획자나 관리자의 글쓰기에 논리력, 설득력, 실행력이 중요하다면, 개발자.. 2023. 3. 30. 7. 스프링부트에서 H2 데이터베이스 연결하기 다양한 데이터베이스를 적용할 수 있는데, h2 데이터베이스는 별도 설치없이 스프링부트에 쉽게 적용해볼 수 있습니다. 이번 시간에는 적용하는 것까지 해보도록 하겠습니다. Project issue: https://github.com/kdohyeon/crypto-labs/issues/7 Pull request: https://github.com/kdohyeon/crypto-labs/pull/11 H2 데이터베이스 h2 데이터베이스는 다음과 같은 특성을 가지고 있다. 메모리 (RAM) 에 의존하고 있기 때문에 어플리케이션이 종료되면 저장되어 있던 데이터가 모두 삭제된다. 필요에 따라 로컬에 데이터를 저장해두고 사용할 수도 있다. 간단한 프로젝트나 실습, 테스트 등에 주로 적용해서 사용한다. Gradle 의존성 .. 2023. 3. 29. 6. buildSrc 기반으로 라이브러리 버전 관리하기 지금까지는 라이브러리/플러그인 버전을 직접 입력해주었습니다. 이를 좀 더 편리하게 하는 방법으로는 buildSrc 를 만들어 활용할 수 있습니다. 자세한 내용은 이 글을 확인해주세요. Project Issue: https://github.com/kdohyeon/crypto-labs/issues/8 Pull Request: https://github.com/kdohyeon/crypto-labs/pull/10 배경 아래 사진을 보면 코틀린 버전을 1.7.22 로 설정하면서 jvm, kapt, plugin.spring, plugin.jpa 에 모두 동일한 버전이 적용되어 있는 것을 확인할 수 있다. 만약 1.7.22 버전에서 다른 버전으로 변경되어야 하면 총 4개의 라인이 수정되어야 한다. 상당히 귀찮은 작업.. 2023. 3. 27. 이전 1 2 3 4 5 6 ··· 13 다음 more 반응형