전체 글 55

git branch 전략 + commit 기록 방법 선택하기

git branch 전략과 commit 방법은 이미 많은 레퍼런스가 존재합니다. 하지만 지금 내 환경에 적합한 전략을 선택하는 것은 조금 다른 이야기입니다. 이 글에서는 사이드 프로젝트를 진행하면서 내가 해본 선택 과정을 기록합니다. GitHub - Our-Class-Bank/core-backend: [side-project] 우리반은행 [side-project] 우리반은행. Contribute to Our-Class-Bank/core-backend development by creating an account on GitHub. github.com 배경 github repository 에서 1인 백엔드 개발 프론트 개발은 별도의 repository 사용 dev, prod 배포 환경 지원 필요 전략 선택..

Spring cache 는 어떤 provider 를 사용하는 것이 좋을까?

회사에서 local cache 를 사용할 일이 생겼습니다. 동료분이 guava 를 알려주셨고 처음 들어보았기에 일단 baeldung 을 검색해 보았는데 조금 이상했습니다. https://www.baeldung.com/guava-cache 캐시를 사용할 때 익히 쓰던 @Cacheable 어노테이션이 보이지 않았습니다. 그래서 익숙하던 ehcache 를 검색해 보면서 비교해 봤습니다. The difference between Ehcache and Guava Cache - actorsfit Recently, I have been doing some cache transformation scenarios, and there are some experience summaries as follows: Cached ..

Series/실전! 2023.04.02

code kata 를 하자! - Codewars

A kata is an exercise in karate where you repeat a form many, many times, making little improvements in each 카타는 하나의 양식을 여러 번 반복하면서 조금씩 개선하는 가라데의 운동입니다. 보통 코딩 테스트 통과를 위한 알고리즘 공부는 leetcode, 백준을 추천하곤 합니다. 하지만 저는 실무에 있어 퍼즐에 가까운 알고리즘 풀이보다는, 범용적인 자료구조와 해당 언어의 Best Practice 학습이 더 중요하다고 생각합니다. 그러던 중 codewars 라는 사이트를 알게 되었고 제 목적에 부합하고 꽤 유용하다고 생각되어 간단히 소개해보고자 합니다. Codewars - Achieve mastery through codin..

잡담 & ETC 2023.02.20

Spring Cloud OpenFeign + WireMock Test

Netflix OSS 에서 시작한 Feign 은 강력한 기능과 편의성으로 Spring Cloud 에 OpenFeign 으로 편입되었습니다. OpenFeign 은 다음과 같은 장점을 가지고 있습니다. 외부 연동 로직을 간소화 시킵니다. MSA 구성에 큰 도움을 줍니다. SAGA 패턴, 마이크로서비스 통신 탄력성 등 리액티브 시스템의 특성을 만족시키는데 유용한 패턴을 제공합니다. OpenFeign 은 이미 널리 알려진 기술이기에 좋은 글들이 많지만 Kotlin + Test 로 작성된 글은 별로 없었습니다. 그래서 외부 연동을 준비하며 학습한 OpenFeign 의 기능을 구현과 테스트로 설명합니다. GitHub - Hyune-s-lab/openfeign-spring-tutorial: openfeign 연습하기..

Study 2023.02.05

RandomCode Generator 성능 측정하기

일련번호는 총 16 자리의 숫자/영문 대문자로 이루어진 문자열이다. 최근 회사 업무를 하던 중 기존에 작성된 무작위 일련번호를 만드는 로직을 보게 되었습니다. 간단한 업무 내용에 Util 성격의 로직이었지만, 구현된 로직은 생각보다 복잡했습니다. 그래서 기존 로직의 의도를 파악하고, 개선을 시도해 보았습니다. 먼저 결론을 공유하고, 시도한 개선을 따라가 보겠습니다. 결론 (각 1만, 10만, 50만, 100만 회 반복) ThreadLocalRandom 의 성능은 매우 뛰어나다. Kotlin Random 역시 뛰어나다. String 변환은 매우 비싼 작업이며 Sequence 가 효율적으로 작동하지 않을 수 있다. Coroutine 은 학습이 부족하여 적용하지 않았다. GitHub - Hyune-s-lab/..

Series/실전! 2023.01.11

Datagrip 에서 Datasource 공유하기

DB 접속 정보 세팅은 가장 기초적인 개발 환경 세팅의 하나입니다. 보통은 애플리케이션이나 환경 변수 정보 모음에서 가져오거나, 별도로 관리되는 엑셀 파일을 활용하곤 합니다. 하지만 균일한 개발 환경을 보장하기 힘들고, 접속해야 되는 DB 가 많은 경우 꽤나 번거로운 일입니다. Datagrip 은 Export Settings 이라는 좀 더 똑똑한 방법을 지원합니다. Manage data sources | DataGrip www.jetbrains.com datasource 세팅이 완료된 기존 직원 1. export 시키고 싶은 정보를 global datasource 로 설정 2. export - Database 2개 체크 datasource 정보를 받고 싶은 신규 직원 1. import - setting...

Tip 2022.11.19

스프링 마이크로서비스 코딩 공작소 (2)

GitHub - Hyune-s-lab/optima-growth: 스프링 마이크로서비스 코딩 공작소 스프링 마이크로서비스 코딩 공작소. Contribute to Hyune-s-lab/optima-growth development by creating an account on GitHub. github.com Phase 1 3. 스프링 부트로 마이크로서비스 구축하기 4. 도커 https://hyune-c.tistory.com/53 Phase 2 5. 스프링 클라우드 컨피그 서버로 구성 관리 6. 서비스 디스커버리 이 글입니다. eureka-server 구현 유레카는 클라이언트의 생존 여부를 체크하여 API 게이트웨이의 라우팅을 돕습니다. eureka-server // build.gradle.kts depen..

스프링 마이크로서비스 코딩 공작소 (1)

GitHub - Hyune-s-lab/optima-growth: 스프링 마이크로서비스 코딩 공작소 스프링 마이크로서비스 코딩 공작소. Contribute to Hyune-s-lab/optima-growth development by creating an account on GitHub. github.com Phase 1 3. 스프링 부트로 마이크로서비스 구축하기 4. 도커 이 글입니다. Phase 2 5. 스프링 클라우드 컨피그 서버로 구성 관리 6. 서비스 디스커버리 https://hyune-c.tistory.com/54 새로 입사한 회사는 제가 생각한 것보다 훨씬 서비스 구분이 많았습니다. 솔직히 이렇게까지 세분화 해야되나? 라는 생각이 들 정도였습니다. 마이크로서비스는 잘 쓰면 높은 생산성과 장애 ..