전체 글
-
Spring boot + Kotlin Coroutine + WebFlux + Security 5 + MySQL 기본 셋업컴퓨터/Spring Boot 2024. 3. 18. 21:31
Spring boot 2.7에서 kotlin coroutine을 써서 webflux를 사용할 것이다. (JDK 17) 시큐리티는 기본 셋업에 R2DBC MySQL을 써서 연결했다. gradle-kts 버전이다. MySQL 테이블 Geolocation Spatial 타입을 갖고 있는 간단한 table이다. CREATE TABLE Markers ( MarkerID INT AUTO_INCREMENT PRIMARY KEY, UserID INT NULL, Location POINT NOT NULL SRID 4326, -- SRID Description VARCHAR(255), CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP, UpdatedAt TIMESTAMP DEFAULT CU..
-
MySQL: 주변 검색 Spatial 함수 탐구컴퓨터/MySQL 2024. 3. 6. 16:24
공간 데이터 처리 카카오맵 API를 이용하여 DB에 저장된 위치 주변 데이터들을 불러오고 싶었다. Postgres + postgis를 사용하면 ST_DWithin 이란 함수를 통해 쉽게 주변 장소들을 불러올 수 있다. https://www.ibm.com/docs/ko/db2/11.5?topic=sf-st-dwithin ST_DWithin ST_DWithin 함수는 두 Geometry가 지정된 거리 내에 있는지 판별합니다. 구문 매개변수 geometry1 geometry2와 비교할 Geometry를 나타내는 ST_Geometry 유형의 값입니다. geometry2 geometry1과 비교할 Geometry를 표시하 www.ibm.com 두 함수 모두 지리적 객체 간의 거리를 계산되는데 쓰지만 최적화가 다르..
-
Go: fiber v2 백엔드에서 토스 페이 API 사용하기컴퓨터/Go language 2024. 3. 4. 12:20
할 것 Go언어 백엔드 서버에 toss payments API를 연동해보고 싶었다. 우선 API 키를 얻어준다. @링크 API 키 | 토스페이먼츠 개발자센터 토스페이먼츠 클라이언트 키 및 시크릿 키를 발급받고 사용하는 방법을 알아봅니다. 클라이언트 키는 브라우저에서 토스페이먼츠 SDK를 연동할 때 사용합니다. 시크릿 키는 토스페이먼츠 API를 docs.tosspayments.com 테스트 키로 하면 아무리 결제해도 실제 돈은 빠지지 않는다. 이해하기 우선 토스 페이먼츠는 Basic 인증 방식을 사용하고 (Authorization: Basic blah 헤더) 시크릿 키가 ID고 비밀번호는 없는 형태고, 모든 응답/요청은 JSON 이다. @토스 페이먼츠 개발자 샌드박스 토스페이먼츠 개발자센터 토스페이먼츠 결..
-
프랑스 파리 (Bercy)에서 네덜란드 암스테르담 버스로 가기 (8시간)기타/해외 여행 2024. 1. 24. 06:44
프랑스 파리에 거처가 있고 네덜란드 친구들을 만나기 위해 혼자 버스 타고 가는 여정을 담았다.영어는 자유롭지만 프랑스어는 완전 기초 문장들만 외우고 사용하는 레벨이다. 기차로 3~4시간이면 가는데 120유로였고 버스로는 7~8시간이지만 20유로 밖에 안 해서 가성비 때문에 버스를 선택했다.FlixBus가 아니라 이 회사와 비슷한 BlaBlaCar 회사 버스를 선택했다. (Omio 웹 사이트에서 최저가 선택) 버스 정류장 위치일단 새벽 4~5시쯤 지하철이나 버스를 타서 Bercy 역에 갔다. (Bercy, 48 bis Bd de Bercy, 75012 Paris)(이른 시간에나 낮에나 항상 조심하고, 그래도 여긴 새벽에도 유동인구가 많다)Flix Bus Shop이라고 공원에 있는 위치를 찾아가면 되는데 (..
-
SNCF Transillien 프랑스 원하는 기차/버스 시간표 웹사이트 만들기컴퓨터/파이썬 2024. 1. 24. 06:16
소개 프랑스 파리 중심이 아닌 외곽에서 1달을 살게 되면서, 매일 파리 가는 기차를 확인했다. (https://www.transilien.com/ 과 J 라인 전용 공지 (https://malignej.transilien.com/) A에서 파리, 파리에서 A 역으로 가는 모든 시간대를 실시간 업데이트로 바로 보고 싶어서 (오늘과 내일) SNCF API를 이용할 것이다. (Société Nationale des Chemins de fer Français로 프랑스 국영 철도 회사) 벨기에는 국영 transporation 회사가 3개다 사용 https://numerique.sncf.com/startup/api/ API - SNCF NUMÉRIQUE Obtenez un accès à l'API numerique..
-
Spring boot: websocket 서버 확장 도전 및 Kafka컴퓨터/Kafka 2023. 12. 24. 13:23
소개 같은 Spring boot 웹소켓 서버 (실시간 채팅을 위한)를 scale-out 하는 (같은 서버를 여러 다른 포트에서) 과정을 담았다. 문제 여기서 마주친 문제는, 여러 다른 포트에서 열린 웹소켓 서버에서 같은 하나의 채팅 방에 있는 유저들끼리 어떻게 통신할 수 있을까? (예: 8081 포트 서버에서 "spring"이란 채팅 방, 8082 포트 서버에서 "spring"이란 채팅 방, 서로 같은 메시지를 봐야 한다.) Sticky Session 처음 떠올린 건 스티키 세션이다. 사용자를 특정 서버 인스턴스에 '고정'해서, 모든 요청이 같은 서버로 라우팅 되도록 하는 기술이다. (세션 데이터 일관성 유지) 웹소켓의 경우, 연결이 한 번 맺어지면 계속 유지되므로, 스티키 세션의 효과가 제한적일 수 있..
-
K6/JMeter로 WebSocket 성능 테스트 해보기 (nginx 로드 밸런서)컴퓨터 2023. 12. 21. 01:08
소개: Spring Boot 프로젝트에 마이크로서비스로 쓰일 채팅 웹소켓 서버를 Rust 및 Spring Boot WebFlux 버전으로 만들고 K6 및 JMeter를 이용해 로드 테스트를 해볼 것이다. i5-10600KF (6코어 - 가상 12) CPU와 24GB 컴퓨터 로컬에서 테스트한 과정이다. n명의 유저 중 80%가 트위터 예전 기준 140 단어 기준 (약 1KB) 메시지를 전송한다. (Lorem ipsum) Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse porttitor quam vitae aliquet faucibus. In condimentum mi id accumsan ullamcorper. Fusce conva..