프로젝트
-
Embedded Redis 구성하여 테스트 수행하기프로젝트/선착순 쿠폰 발급 시스템 2023. 5. 4. 00:01
개요 로컬에서 redis를 테스트하기 위해 embedded redis를 구축하고자 합니다. h2와 비슷하게 embedded redis를 활용하면 프로젝트를 수행하기 위해 특별한 작업 없이 git clone만 받으면 바로 로컬/개발을 할 수 있게 됩니다. 사용 기술 Spring Data Redis Redis를 JPA Repository를 사용하듯이 인터페이스 제공 Lettuce Redis Java Client Jedis는 업데이트가 거의 되지 않음 Embedded Redis H2와 같은 내장 Redis build.gradle.kts //redis implementation("it.ozimov:embedded-redis:0.7.2") implementation("org.springframework.boot:..
-
Event Driven Architecture란?프로젝트/선착순 쿠폰 발급 시스템 2023. 5. 1. 00:01
개요 회원과 쿠폰 도메인을 설계할 때 Event 기반으로 다른 도메인들, 모듈들과 결합도를 느슨하게 가져가려고 합니다. 지금 정리하는 부분은 "우아한 형제들 권용근님의 회원시스템 이벤트기반 아키텍처 구축하기"를 보면서 더 잘 이해하기 위해 글로 한번 정리해보고자 합니다. 이외에도 다른 글들을 조금씩 참조하긴 했지만 적다 보니 용근님의 글이 거의 90% 같습니다. 회원 시스템 이벤트 기반 아키텍처 구축과정 회원과 가족계정이라는 두 가지 도메인의 관계를 예시로 알아보고자 합니다. "회원의 본인인증이 초기화되는 경우 가족계정 서비스에서 탈퇴되어야 한다"라는 정책이 존재합니다. 이를 코드로 작성하면 다음과 같습니다. public void initCertificationOwn(MemberNumber memberN..
-
Spring Boot Flyway 적용하기(flyway, h2 DB test 에러 해결)프로젝트/선착순 쿠폰 발급 시스템 2023. 4. 30. 00:01
개요 DB 형상관리를 위해 Flyway를 도입하고자 합니다. Flyway란? git을 통하여 우리가 코드를 관리하는 것의 DB 버전입니다. 데이터베이스의 DDL의 이력을 쌓아 DDL이 어떻게 변화되었는지 관리하는 툴으로 사용할 수 있습니다. 실무에서는 local prod등 실제 서버와 개발환경이 나뉘어 있습니다. 이때 local 에서 변경한 DB의 스키마나 데이터를 운영 DB에 반영할 때 누락하는 것을 막기 위해 사용합니다. Flyway Convention 기본 위치는 main/reousrces/db/migration (커스텀 설정 가능) Prefix V(Versioned) 현재 버전을 새로운 버전으로 업그레이드 U(Undo) 현재 버전을 이전 버전으로 되돌리는 경우 R(Repetable) 버전에 관계 ..
-
Database local dev환경 구성하기(postgreSQL with Docker)프로젝트/선착순 쿠폰 발급 시스템 2023. 4. 29. 00:01
개요 별다른 설정 없이도 Spring Boot가 지원하는 in-memory H2 Database 덕분에 JPA를 활용하여 API요청 테스트를 수행할 수 있었습니다. local 환경에는 h2 database를 dev환경에는 postgreSQL로 구성해 보고자 합니다. application-infra.yml 설정 --- spring: profiles: active: on-profile : local h2: console: enabled: true jpa: database-platform: org.hibernate.dialect.H2Dialect hibernate: ddl-auto: none datasource: hikari: connectionTimeout: 30000 idleTimeout: 60000 ma..
-
회원 도메인 모듈 만들기프로젝트/선착순 쿠폰 발급 시스템 2023. 4. 27. 00:01
Domain 모듈 생성 settings.gradle.kts에 다음과 같은 구문을 추가합니다. include("domain") domain이라는 이름을 가지는 Directory를 추가하고 gradle을 refresh 합니다. domain 모듈에는 순수 Kotlin만 다루게 됩니다. Jpa Entity가 아닌 순수 회원 객체 Jpa Repository가 아닌 Repository Interface 제공 member entity sample code package com.demo.domain.member.entity class Member( val id: String, val password: String, val nickName: String, val fullName: String, ) member repos..
-
gradle build 속도 개선하기프로젝트/선착순 쿠폰 발급 시스템 2023. 4. 25. 00:01
개요 project가 잘 build 되는지 , 테스트는 제대로 수행되는지 ./gradlew build 명령어를 수행하곤 합니다. 하지만 매번 오래걸리는 빌드를 더 빠르게 수행할 수 없을까? 에서 출발해서 속도를 개선해보고자 합니다. 현재 build time BUILD SUCCESSFUL in 49s 49초가 걸렸습니다. 현재 프로젝트는 멀티모듈구조에 kafka embedded test 한건이 존재했습니다. IntelliJ IDEA로 build 하기 If you have a pure Java or a Kotlin project, it is sometimes better to select IntelliJ IDEA for building a project. IntelliJ IDEA supports the in..
-
gradlew build 에러 해결 과정 기록프로젝트/선착순 쿠폰 발급 시스템 2023. 4. 24. 00:01
개요 평소 작업하던 다른 컴퓨터와 다르게 macbook으로 git clone을 받고 gradlew build를 수행했을 때 에러 해결과정을 담아보고자 합니다. Permission Deney junuu@aideulnalaui-MacBookPro coupon-system % ./gradlew build zsh: permission denied: ./gradlew 권한이 없어서 나오는 에러입니다. 다음을 통해 해결하였습니다. chmod +x gradlew org.gradle.wrapper.GradleWrapperMain junuu@aideulnalaui-MacBookPro coupon-system % ./gradlew build 오류: 기본 클래스 org.gradle.wrapper.GradleWrapperMa..
-
Docker로 Spring + Kafka 실행하기프로젝트/선착순 쿠폰 발급 시스템 2023. 4. 22. 00:01
Docker로 카프카 서버 띄우기 사전조건으로 docker와 docker-compose가 이용가능해야 합니다. docker-compose.yml 파일 작성하기 #docker-compose.yml version: '2' services: zookeeper: container_name: local-zookeeper image: wurstmeister/zookeeper ports: - "2181:2181" kafka: container_name: local-kafka image: wurstmeister/kafka depends_on: - zookeeper ports: - "9092:9092" environment: KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1 KAFKA_ADVERTISE..