일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- Container Registry
- 자바 ORM 표준 JPA 프로그래밍
- kusitms
- cicd
- 30기
- 모임 장소 추천
- springboot
- GitHub Actions
- Spring
- Spring Batch
- JPQL
- 도메인 주도 개발 시작하기
- 백엔드
- 약속 장소 추천
- 중간 장소 추천
- Domain Driven Design
- 중간 지점 추천
- K3S
- 한국대학생it경영학회
- java
- 최범균
- JPA
- 큐시즘
- ddd
- 쿠버네티스
- 영속성
- RESTClient
- 이펙티브자바
- 객체지향 쿼리 언어
- redis
- Today
- Total
목록Backend (37)
코딩은 마라톤

중간 지점 추천 서비스인 SPOT(스팟)은 에러 발생 시, 팀에서 어떤 에러인지 문의가 들어오고 이때 터미널에 들어가 로그를 확인했다.다만, 아직 미흡한 로깅 처리와 에러 추적에 대한 시스템을 마련해두지 않아서 매번 예외 로그만 확인하는데 시간이 꽤 걸렸다. 팀 SPOT은 디스코드를 협업 툴로 사용하고 있고, 디스코드 웹훅을 이용해 에러 발생 시 신속하게 대응할 수 있을 것으로 판단하여 스팟-에러 알림 채널을 만들었다. 웹훅을 어떻게 연동하고 처리하는지 알아보자! 1. 디스코드 웹훅 생성하기 디스코드 알림 채널을 만들고, 서버 설정 -> 연동을 통해 웹훅을 만들 수 있다.웹훅을 만들고 연결할 알림 채널과 이름을 설정하고 웹후크 URL을 복사한다. 웹훅 URL에 요청을 보내 디스코드에 알림을 보내는 방식..

https://developer-anxi.tistory.com/79 [Kubernetes] K3s로 운영·스테이징 환경을 단일 서버에서 분리하기 (1)나는 현재 중간 지점 추천 서비스인 "스팟(SPOT)"을 디벨롭하고 있으며 8월 중에 릴리즈 예정이다.지금은 UI 개선과 API 로직 개선 등 다방면에서 개선하고 있다. SPOT은 릴리즈 전인 지금도 사용할developer-anxi.tistory.com 1부에서는 K3s로 단일서버에서 운영·스테이징 환경으로 분리한 이유를 적어보았다.이번에는 단일서버에서 분리한 방식을 적어보려 한다. 쿠버네티스를 적용한 아키텍처 기존 아키텍처와 바뀐 부분은 쿠버네티스를 적용해서 Ingress 및 운영, 스테이징 네임서버 분리 그리고 스프링 애플리케이션 파드와 레디스 파드를 ..

나는 현재 중간 지점 추천 서비스인 "스팟(SPOT)"을 디벨롭하고 있으며 8월 중에 릴리즈 예정이다.지금은 UI 개선과 API 로직 개선 등 다방면에서 개선하고 있다. SPOT은 릴리즈 전인 지금도 사용할 수 있고, 서울·경기·인천 지역에서 친구들과 어디서 만날지 확인할 수 있다.https://www.pickspot.co.kr/ SPOT최적의 중간장소 찾기, 약속장소 추천www.pickspot.co.kr 운영 서버 단일 구성의 한계: API와 UI 불일치로 인한 리스크 존재출시 전인 지금도 사용할 수 있는 만큼, 기능 개발/수정 후 배포된다면 운영 서버에 바로 적용되어 프론트에서 사용하는 값과 백에서 제공하는 값이 틀어질 수 있다. 즉, 기존의 SPOT은 운영 서버 하나로만 관리되어 백엔드에서 배포하..
https://developer-anxi.tistory.com/76 [Redis] 외부 API Rate Limiter를 만들어보기 (with. AOP)SPOT은... 외부 API 호출이 많다. SPOT의 메인 기능은 애플리케이션 레벨에서 최적의 중간 지점(역)을 계산하고, 이후 여러 출발지부터 중간 지점까지의 경로를 보여주는 것이다.이때 출발지 ~ 중간developer-anxi.tistory.com 위 글과 이어지는 내용이라서 먼저 읽어주시면 좋을 거 같습니다 🙏🙏🙏 문제 인식 : 멀티스레드 환경에서 Race Condition이 발생@Testvoid 멀티스레드_환경에서_RedisRateLimiter_원자성을_보장한다() throws InterruptedException { // given ..

SPOT은... 외부 API 호출이 많다. SPOT의 메인 기능은 애플리케이션 레벨에서 최적의 중간 지점(역)을 계산하고, 이후 여러 출발지부터 중간 지점까지의 경로를 보여주는 것이다.이때 출발지 ~ 중간 지점까지의 경로를 대중교통과 자가용, 두 가지를 기준으로 보인다. 중간 지점을 계산할 때, 지하철역 공공데이터를 가져와서 환승까지 전부 고려하여 계산하기 때문에 지하철 상세 경로는 보여줄 수 있지만, 버스나 자가용은 구현할 엄두가 나지 않았다. 그래서 대중교통 경로는 Odsay를, 자가용 경로는 Kakao Mobility를 호출하여 가져오도록 하였다. 그러나,, 외부 API를 사용하는 편리함을 무료로 얻는 데는 한계가 있다.특히 Odsay의 제한 호출수는 일 1,000회로 리미트를 초과하면 서비스를 운..
시작에 앞서,애플리케이션 코드를 개발할 때는 명령형(imperative)과 리액티브(reactive, 반응형)의 두 가지 형태로 코드를 작성할 수 있다.명령형 코드순차적으로 연속되는 작업, 각 작업은 한 번에 하나씩 그리고 이전 작업 다음에 실행된다.데이터는 모아서 처리되고 이전 작업이 데이터 처리를 끝낸 후에 다음 작업으로 넘어간다.리액티브 코드데이터 처리를 위해 일련의 작업들이 정의되지만, 이 작업들은 병렬로 실행될 수 있다.각 작업은 부분 집합의 데이터를 처리할 수 있으며, 처리가 끝난 데이터를 다음 작업에 넘겨주고 다른 부분 집합의 데이터로 계속 작업할 수 있다.리액티브 프로그래밍 이해하기리액티브 프로그래밍은 명령형 프로그래밍의 대안이 되는 패러다임이다.명령형 프로그래밍의 문제작업이 수행되는 동안..

도입 배경HTTP Client를 사용할 때, RestClient, WebClient를 사용했었습니다.다만 RestClient, WebClient를 사용할 때는 Header와 Body 등에 필요한 값을 작성해야 합니다.하기 코드는 카카오 Local Rest API를 `RestClient`를 이용하여 연결한 코드입니다.public KakaoSearchResponse search(KakaoSearchRequest kakaoSearchRequest) { try { return RestClient.create() .get() .uri(uri) .headers(header -> { h..

[ 도입 배경 ]저번 프로젝트에서 활동 자동 종료 기능을 구현해야 했습니다. 활동 자동 종료 과정:1. 사용자가 자투리 시간을 입력한다.2. 자투리 시간이 지나면, DB의 활동 상태는 자동으로 종료 상태로 변경된다. 자동으로 변경해야 하는데, 이 기능을 구현하려면 TTL을 사용해야 한다고 생각했습니다. 그래서 활동 시작 시점에 TTL을 자투리 시간만큼 설정해두고 TTL이 지나면 비동기 처리되면 되지 않을까.. 생각하고 방법을 모색하던 중에,,, RabbitMQ의 Delayed Message Plugin을 알게 되었습니다. [ RabbitMQ ]RabbitMQ는 오픈소스로 개발된 메시지 브로커입니다. RabbitMQ는 여러 프로토콜을 지원하지만, 대다수는 AMQP(Advanced Message Queu..