본문 바로가기
반응형

분류 전체보기96

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.
5. Upbit API 연결하기 가장 기본적인 형태로 멀티 모듈 프로젝트를 구성했습니다. 이제 가상화폐 거래소 Upbit 에서 제공하는 OPEN API 를 연결해서 crypto-labs 서비스가 제공할 수 있는 하나의 API 를 만들어보겠습니다. https://github.com/kdohyeon/crypto-labs/pull/9/commits API Key 발급받기 OPEN API 를 사용하기 위해서는 API Key 를 먼저 발급받아야 한다. Upbit 의 경우에는 여기서 받을 수 있다. Open API 사용하기를 클릭하면 로그인을 할 수 있다. 사용하고자 하는 기능만 선택을 하고 접근할 전용 IP 주소를 입력한다. 일단은 조회만 하면 되니 조회 관련 기능만 선택했다. Open API Key 발급받기 버튼을 클릭하면 네이버나 카카오로 .. 2023. 3. 22.
4. 스프링부트 3.0 적용하기 (feat. HelloWorld API 만들기) 이번 시간에는 만든 프로젝트에 스프링부트 3.0 을 적용해보고 HelloWorld 를 출력하는 API 도 하나 만들어보겠습니다. https://github.com/kdohyeon/crypto-labs/pull/5 최상단 build.gradle.kts 수정하기 스프링부트를 적용하기 위해서는 먼저 최상단에 위치한 build.gradle.kts 를 수정해야 한다. 스프링부트 버전 3.0.4 스프링 의존성 관리 버전 1.1.0 kotlin 버전 1.7.22 // build.gradle.kts import com.linecorp.support.project.multi.recipe.configureByLabels plugins { id("io.spring.dependency-management") version ".. 2023. 3. 22.
반응형