본문 바로가기

전체 글151

대기열 시스템 커머스 서비스에서는 이벤트로 인해 짧은 시간에 급격하게 올라가는 트래픽에 대응하기 위해서 대기열 시스템을 적극적으로 활용하고 있다. 대기열 시스템의 실제 구현은 서비스의 요구사항, 트래픽 수준 등에 따라 천차만별이다.이번 포스팅에서는 가상의 요구사항을 제시하고 이를 만족하는 대기열 시스템을 구현해보도록 하겠다. (Fastify 기반의 대기열 시스템 API 예제는 여기에서 확인할 수 있다) 요구 사항이벤트 상품 주문 페이지의 트래픽을 조절할 수 있는 대기열 시스템을 구현한다. 이 시스템의 기능적 요구 사항은 아래와 같다.대기열 시스템은 대기와 입장만 관리하고 입장 이후는 관리하지 않는다.대기열 시스템은 이벤트 상품 주문 페이지에 5초 당 10명의 사용자를 입장시킨다.사용자가 대기할 필요가 없는 경우 바로.. 2024. 11. 12.
Docker 로컬 Redis cluster 개발 환경 구성 로컬에서 직접 Redis docker image로 cluster를 구성하는 방법은 복잡하지만,grokzen/redis-cluster 이미지를 사용하면 따로 네트워크 설정이나 스크립트를 만들 필요없이 쉽게 Redis cluster 개발 환경을 구성할 수 있다. 다만 아쉬운 점은 최신 Redis 7.4 버전은 정식으로 지원하지 않는다는 점과현재 기준으로 Redis 7.2.5 버전이 지원하는 가장 최신의 버전인데 7.2.x 버전은 오류가 나서 정상적으로 실행되지 않는다.(관련 이슈) 그래서 실제로 사용할 수 있는 가장 최신 Redis 버전은 사실상 7.0.15 버전이다. 3 master nodes + 3 slave nodes먼저 아래와 같은 3개의 1 master - 1 slave shard로 구성된 Redi.. 2024. 11. 8.
[Docker Compose] depense_on으로 서비스 의존 관계 설정하기 대부분의 웹 애플리케이션은 DB나 Message Queue와 같은 외부 인프라에 종속을 갖게 된다.예를 들어 DB를 사용하는 Spring 애플리케이션은 실행 시에 DB datasource를 생성하기 위해서 먼저 DB 커넥션을 맺는다.이때 DB와 연결이 되지 않으면 Spring 애플리케이션이 실행되지 않는데,Docker Compose에서는 이렇게 서비스 간의 의존 관계를 명시해야하는 경우 healthcheck와 depense_on 옵션을 통해서 처리할 수 있다. healthcheck 옵션은 해당 서비스의 상태를 어떻게 확인할지를 명시한다.depends_on 옵션은 다른 서비스와의 의존 관계를 명시한다. 예시로 MySQL과 Redis를 의존하는 웹 애플리케이션의 경우 아래와 같이 docker-compose .. 2024. 10. 30.
[Spring] Swagger UI 대신 Scalar API Reference를 사용하여 API 문서 사용하기 Scalar API Reference는 Swagger UI를 대체할 수 있는 또다른 API 문서화 방법이다. Swagger UI와 비교하였을 때 화면 구성이 깔끔하기도 하며 API를 호출할 때 Postman과 같은 편리한 UI를 제공해줘서 개인적으로는 Swagger UI의 대체제로써 훌륭한 선택이라는 생각이다. 이번 포스팅에서는 Spring Web MVC 프로젝트에서 Scalar API Reference를 사용하는 방법에 대해 알아보도록 하겠다. (코드 예제는 여기에서 확인할 수 있다)  0. Scalar Quickstart 살펴보기먼저 어떻게 Scalar API Reference를 사용하면 좋을지를 알아보기 위해Scalar repository README에 있는 Quckstart를 살펴보자. .. 2024. 10. 29.
CodeGPT로 IntelliJ에서 Ollama LLM 사용하기 LLM은 업무의 방식을 바꿔놓은지 오래 되었다.내가 하고 있는 작업에 대해 의견을 물어보면서 업무의 도우미 역할도 해주고, 새로운 기술을 배울 때에도 구글 검색보다도 더 편리하고 빠르게 예제를 보여준다.또한 LLM을 통해 코딩 업무를 직접적으로 도움 받을 수 있는 서비스 또한 여럿 나왔는데, 대표적으로 Github의 Copilot과 Jetbrains의 AI Assistant가 있다. 하지만 보안 상의 이유로 외부 LLM을 사용하기 힘든 경우가 있을 수 있는데, 이때 local LLM을 사용하여 LLM의 도움을 받을 수 있다. 이번 포스팅에서는 IntelliJ의 CodeGPT plugin을 사용하여 Ollama 환경에서 설치한 local LLM을 통해 copilot 기능을 활용하는 방법에 대해 알아보도록 .. 2024. 9. 11.
🤗 Transformers - CLIPModel fine-tuning 앞서 image classification을 하는 예시를 통해 🤗 Transformers의 CLIPModel의 사용법을 알아보았다. - 참고 이번에는 CLIPModel을 custom dataset에 맞춰 fine-tuning하는 예제에 대해 알아보도록 하겠다.(전체 코드는 여기에서 살펴볼 수 있다) 개요데이터모델을 훈련시키기 위해서 image-text pair 데이터가 필요하다.여기서는 CIFAR10 데이터셋을 사용할 것이고, image의 label을 통해 text를 생성하여 pair 데이터를 만들어 사용할 것이다. 이 포스팅에서는 CIFAR10 데이터셋을 사용하였지만 이미지 사이즈도 작기도 하고 class도 10개로 매우 적기 때문에 실제로는 fine-tuning을 적용하기엔 부적합하다.예시를 보여주.. 2024. 8. 15.