Feature Flags? 누구냐 넌
·
Spring
1. 서론 이전 API Version 관리를 포스팅했던 내용에 이어 이번에는 Feature Flags 내용을 작성해보려고 한다. 현재까지 나는 신규 프로젝트를 개발하는 일이 잦았다. 신규프로젝트를 진행하며 빠르게 변동되는 API들을 관리할 필요성이 있었고 서비스 도중 사용하지 않는 API를 제외시키기 위해 업데이트 후 재 배포를 했던 경우도 여럿 있었다. 그러다 문득, 들었던 생각은 굳이 API 필터링을 위해 배포 비용을 감안해야 할까?라는 의문이 들었었고 이를 해결할 수 있는 방법은 없을지 최근 생각하게 되었었다. 이런 고민에 대한 이야기를 민수님, 건수님께 꺼냈을 때 민수님께서 Feature Flags란 키워드를 알려주셨었고 해당 키워드에 대해서 한번 학습을 진행해 보았고 이를 잊지 않기 위해 정리를..
Chained Transaction Manager 파헤치기
·
Spring
서론 최근 리팩토링 작업을 진행하고 있다. 리팩토링 작업을 진행하던 도중 Transaction들이 Chain Transaction Manager로 묶여있는 걸 확인할 수 있었고 해당 Manager가 Deprecated가 된 상태로 있는 이슈가 있어 해당 부분을 개선하고자 했다. 개선 도중 이 내부는 어떻게 동작되고 있고 개선 대안은 어떤 게 있는지 의문점이 들었었고 해당 부분을 개선하는 도중 내부 동작을 기억하고자 글을 적게 되었다. 개선하면서 하나씩 더 채워보려고 한다. What is Chained TransactionManager? 위 트랜잭션 매니저는, Spring Data Commons에서 공식적으로 지원하는 라이브러리이다. 해당 기술의 내부 구조를 간단하게 살펴본다면 여러개의 나눠진 트랜잭션 매..
실시간 코인시세 어디까지 알아봤니? part 1
·
Spring
1. 개요 이전, 비트코인 개선 기를 올린 지 약 두어 달이 지났다. 그동안 동아리 내에서 신규 서비스 : 북마크 아카이빙 서비스 런칭이 얼마 안 남은 시점이기도 하였고 회사 내에서도 신규 프로젝트를 진행하고 개인적인 이런저런 일들이 많아 포스팅이 뒤로 미뤄졌었다. 해당 프로젝트의 경우 단순 “카프카”, “코틀린” 두가지를 학습해 보자라는 취지로 시작했었는데 하다 보니 실시간성을 유지하며 프로젝트를 발전시켜보고 싶었고 이와 더해 최근 관심이 생긴 애플리케이션 아키텍처를 통해 좀 더 고도화를 해보고 싶단 생각이 들었다. 그렇기에, 이번 목표는 다음과 같이 선정해보았다. 기존 애플리케이션 아키텍처 개선 빗썸 Open Websocket을 활용한 실시간 데이터 송수신 나름대로(?)의 MSA 상황을 연출해 보고 ..
빗썸 API를 활용한 매수 / 매도 데이터 적재
·
Spring
서론 최근 회사프로젝트를 접하며 새로 “코틀린 + Kafka”를 활용해야 하는 서비스의 개발을 진행해야 했고 개인적으로 코틀린과 kafka를 활용해 본 적이 없었기에 학습을 진행하며 이를 활용해 예제를 구현하고자 하였다. 나는, 그저 만드는 것보다 무언가 재밌는 주제를 선정해 해당 서비스를 개발해 보면 어떨까? 란 생각을 하였고 이때 눈에 들어왔던 게 비트코인 시세였다. 비트코인 시세는 실시간으로 변동이 되고 빗썸에서는 Open API를 통해 이에 대한 데이터를 제공해주고 있었다. 학습목적으로 사용하고자 했고, 영리 목적은 절대 네버 없기에 해당 API를 활용해 구현을 진행해 보면 재밌겠단 생각을 했고 해당 부분의 구현을 진행했다. 설계 해당 서비스의 구현을 진행하며 고려한 사항은 다음과 같았다. 빗썸 ..
[Spring Boot + Chat GPT] Open AI API 적용기
·
Spring
서론 최근 Chat GPT가 굉장히 많은 플랫폼에서 상용화가 되고 있고 핫하다는 걸 체감을 많이 느꼈다. Chat GPT를 활용하여 현재 내가 하는 서비스 혹은 이후의 프로젝트들에서 이를 활용해 볼 수 있는 레퍼런스를 만들어보고 싶단 생각이 들어 보일러 플레이트를 한번 직접 만들어볼까?라는 생각으로 작업에 착수하게 되었다. 물론, Open AI 공식 홈페이지에 들어가보면 해당 Open API를 어떻게 사용하면 되는지 친절하게 설명들이 나와있긴 하지만 해당 부분 외로 레퍼런스를 찾았을 땐 마땅히 그렇다 할 레퍼런스가 부족했고 무엇보다 한국어로 된 레퍼런스는 찾기 힘들다는 생각이 들어 작게나마라도 한번 작성해 보자!라는 포부를 가지고 글을 작성하게 되었다. 해당 레퍼런스에서는 2023.04.16 기준으로 C..
분산락과 네임드락 그리고... 동시성
·
Spring
목차 서론 동시성을 제어해야 하는 이유 동시성 네임드 락 분산 락 분산 락을 활용할때 Redis를 활용하는 이유 Lettuce vs Redisson Redisson 내 tryLock()과 Semaphore 예제 서론 최근, DB관련 공부를 진행하며 이전부터 동시성을 제어할 수 있는 방법으로 LOCK을 사용할 수 있음을 알고 있었는데, 위 내용을 현재 제가 사용하고 있는 Spring Boot에 접목시켜 봄으로써 이에 대한 리마인드와 저의 생각들을 정리해 보고자 글을 작성하게 되었다. 동시성을 제어해야 하는 이유 동시성을 그렇다면 왜 제어해야 할까요? 동시성을 제어하지 않는다면 발생되는 이유는 다음과 같습니다. Race condition 두 개 이상의 스레드가 동시에 같은 데이터를 접근하여 값을 변경하고자 ..
Throttling과 debounce에 대해 알아보자
·
Spring
서론 최근 링크드인을 시작하며 여러 가지 정보들을 많이 받고 있다. 링크드인을 통해 영상을 보던 도중 현재 내가 진행하였던 푸시 알림 서비스 관련하여 debounce를 적용하여 구현하셨다는 인터뷰 영상을 접하였고, 해당 개념을 한번 살펴보며 예제를 작성해보고 어떤 식으로 사용할 수 있을지 찾아보며 공부를 진행해보았다. 공부를 진행하며 해당 개념에 대해 다시 한번 정리해보고자 포스팅을 작성하게 되었다. 해당 포스팅에서는 다음과같은 항목들을 다뤄보려고 한다. 스로틀링이란? 디 바운스란? 두 개념의 공통점과 차이점 예제 코드 결론 참고 ref 쓰로틀링 ( throttling ) API가 서버에서 사용되는 속도를 제한하는 프로세스로서, 단위 ( 초 , 분... )에 실행할 수 있는 서비스 요청 수를 제한한다. ..
[Design Pattern] Strategy Pattern 전략패턴에 대해 알아보자!
·
Spring
최근 회사에서 매주 이슈 체크 및 코드 리뷰를 진행하기로 하여, 이때 전략 패턴에 대해 소개를 해주시고 공유를 받아 연습해볼 겸 한번 작성해 보았다. 취준 당시, 디자인 패턴에 대해 항상 나중에 해봐야지... 라고 생각했었는데 요즘이 적기라 생각이 들었고 추후에 도움을 많이 받을 것 같아 정리해보려고 한다. 정의부터 한번 알아보도록 하자 전략 패턴 ( Strategy pattern ) 정책 패턴 (policy Pattern)이라고도 불리며, 실행중에 알고리즘을 선택할 수 있게 하는 행위 소프트웨어 디자인 패턴이라고 위키백과가 말하고 있다. 객체의 행위를 직접 수정하지 않고 전략을 바꿔줌으로서 행위를 유연하게 확장한다는 장점을 가지고 있다. 나는 제공해주셨던 뉴스 예제를 최근 연습하고 있는 코틀린을 적용해..