전체 글 97

Springboot 속도 제한 및 조절 구현, 유량 제어 | Resilience4j

1. 적용 사유2. Resilience4j가 뭔가요3. 적용 방법4. 결과 1. 적용 사유https://roadmap.sh/projects/weather-api-wrapper-service Weather API Project IdeaBuild a weather API that fetches and returns weather data from a 3rd party API.roadmap.sh요 과제를 수행하다 Rate Limit을 조절해달라는 요구사항이 있어서 사용했습니다.특정 API 의 요청이 일정 수치 이상 되면 오류 Response body를 반환합니다. 2. Resilience4j가 뭔가요Resilience4j는 Circuit Breaker, Rate Limiter, Retry, Bulkhead을 ..

SpringBoot 2025.03.17

Springboot ECS logging structure

1. 적용 사유2. Marker가 뭔가요3. ECS 로깅이 뭔가요4. 적용 방법5. 결과  1. 적용 사유datadog에 로그를 쌓기 위해 ecs 포맷을 사용해야 했습니다.그 중 개인정보가 포함되어있는 로그 정보를 datadog에 보낼 수 없었습니다.그래서 slf4j 혹은 log4j 로그에 Marker를 추가하여개인정보 로그는 보내지 않도록 설정하기로 하였습니다. 2. Marker가 뭔가요로그에 Object를 추가하여 태그를 지정할 수 있습니다.예를 들어 특정 Marker가 있는 로그는 출력하지 않기. 3. ECS 로깅이 뭔가요ECS는 로그 및 메트릭과 같은 Elasticsearch 혹은 datadog 에 이벤트 데이터를 저장할 때 사용할 공통 필드 집합입니다. 이벤트 소스 : 이벤트 소스가 Elasti..

SpringBoot 2025.02.26

Spring Boot XSS 크로스사이트 스크립트 적용하기 with jsoup

1. 서론2. 적용 방법3. 결과적용했던 코드https://github.com/GHGHGHKO/roadmap-todo/commit/2b7f2543df849704f9784d3afc818ae07db72ef81. 서론회사에서 최근에 시작한 프로젝트에 보안 검사를 받았습니다.Request body를 통한 크로스사이트 스크립트 취약점이 도출 되었습니다. 도출되었던 방식은1. a_dns API Request body에 악성 script를 심어서 전송합니다.2. database에는 악성 script가 입력됩니다.3. 일반 고객이 b_dns 로 홈페이지에 접속합니다.4. 악성 script가 들어가 있는 정보를 조회합니다.5. 악성 script가 db에서 조회되어 고객에게 보여집니다.6. 해당 스크립트가 웹사이트에서 실..

SpringBoot 2024.12.01

집에서 서비스를 오픈 해보자 (5) | upptime 모니터링, status 페이지 추가하기

집에서 서비스를 오픈 해보자 (1) | 개요집에서 서비스를 오픈 해보자 (2) | 서버 세팅하기집에서 서비스를 오픈 해보자 (3) | dns 연결하기집에서 서비스를 오픈 해보자 (4) | CI/CD 연동하기집에서 서비스를 오픈 해보자 (5) | upptime 모니터링, status 페이지 추가하기   1. 소개Upptime은 Github(Github Actions)기반의 되어있는 uptime 모니터링, status 페이지를 제공하는 오픈소스입니다.3가지의 기능을 제공하고 있습니다. 1. Github Actions를 기반으로 workflows를 통해 웹 사이트를 호출합니다. x분(최소 5분)마다 실행합니다.2. 지정된 endpoint가 죽으면 Upptime은 Github repository에서 자동으로 새..

self-hosted 2024.11.17

집에서 서비스를 오픈 해보자 (4) | CI/CD 연동하기

집에서 서비스를 오픈 해보자 (1) | 개요집에서 서비스를 오픈 해보자 (2) | 서버 세팅하기집에서 서비스를 오픈 해보자 (3) | dns 연결하기집에서 서비스를 오픈 해보자 (4) | CI/CD 연동하기집에서 서비스를 오픈 해보자 (5) | upptime 모니터링, status 페이지 추가하기  이전 포스팅에서는서비스를 오픈하여User가 서비스에 접근하는 부분까지 구현을 완료했습니다. 이번 포스팅에서는개발자가 Github에 코드를 push한 뒤Github Actions을 활용하여 CI/CD를 진행하도록 하겠습니다.   이 사진에서 developer가 GitHub에 코드를 push 했을 때 일어나는 일들을 구현할겁니다.코드를 push 하면 Raspberry Pi 안에 설치되어있는 Github Actio..

self-hosted 2024.07.18

집에서 서비스를 오픈 해보자 (3) | dns 연결하기

집에서 서비스를 오픈 해보자 (1) | 개요집에서 서비스를 오픈 해보자 (2) | 서버 세팅하기집에서 서비스를 오픈 해보자 (3) | dns 연결하기집에서 서비스를 오픈 해보자 (4) | CI/CD 연동하기집에서 서비스를 오픈 해보자 (5) | upptime 모니터링, status 페이지 추가하기 이전 포스팅에서는Docker와 NPM(Nginx Proxy Manger)를 설치하여실행 테스트를 진행해봤습니다. 이번 포스팅에서는let's encrypt, free dns를 사용하여서비스 -> nginx로 reverse proxy를 거는npm 세팅을 하겠습니다. 0. 사전 작업서버에 service container가 띄워져있어야 합니다.포스팅 주제와는 조금 거리가 있으므로 넘어갔습니다. 필요한 경우https:..

self-hosted 2024.07.09

집에서 서비스를 오픈 해보자 (2) | 서버 세팅하기

집에서 서비스를 오픈 해보자 (1) | 개요집에서 서비스를 오픈 해보자 (2) | 서버 세팅하기집에서 서비스를 오픈 해보자 (3) | dns 연결하기집에서 서비스를 오픈 해보자 (4) | CI/CD 연동하기집에서 서비스를 오픈 해보자 (5) | upptime 모니터링, status 페이지 추가하기   이전 포스팅에서는간단한 개요에 대해 적었습니다. 이번 포스팅에서는Docker와 NPM(Nginx Proxy Manger)를 설치하여아래 다이어그램 중 Raspberry Pi(우측 파랑색부분) 부분을 세팅할 예정입니다. Raspberry Pi가 아니어도 되고linux 기반의 서버면 충분합니다.  1. Docker 설치https://docs.docker.com/engine/install/ubuntu/요 사이트에..

self-hosted 2024.07.07

집에서 서비스를 오픈 해보자 (1) | 개요

집에서 서비스를 오픈 해보자 (1) | 개요집에서 서비스를 오픈 해보자 (2) | 서버 세팅하기집에서 서비스를 오픈 해보자 (3) | dns 연결하기집에서 서비스를 오픈 해보자 (4) | CI/CD 연동하기집에서 서비스를 오픈 해보자 (5) | upptime 모니터링, status 페이지 추가하기    Web : https://klassic-quote.vercel.app/API : https://klassic-quote-api.mooo.com/v1/random-quote취미로 만들었던 서비스에서활용한 방법을 작성하였습니다.  집에서 서비스를 오픈하는 이유클라우드 비용을 사용하고 싶지 않았습니다. 사용자가 거의 없어서..그리고 집에 남는 컴퓨터가 있었습니다. 😁  집에서 서비스를 오픈하기 위한 준비물1...

self-hosted 2024.06.06

GraalVM 으로 SpringBoot 시작 시간 줄이기 (맛보기)

TL;DRGraalVM(지랄VM)은 Java 어플리케이션을 미리 컴파일하여 바로 시작될 수 있게 합니다. 시작 시 워밍업이 필요하지 않으며, 더 적은 리소스를 사용합니다. 대신 빌드가 느립니다. 자세한 정보는 https://www.graalvm.org/latest/docs/getting-started/ 시작시간 비교하기Spring Batch를 사용하였습니다. (아주 간단한 Job을 실행하였습니다.) 2.474s -> 0.114s 예시 코드 https://github.com/GHGHGHKO/migration-v3-with-graal migration-v3-with-graal/src/main at main · GHGHGHKO/migration-v3-with-graalMigrating from Spring B..

SpringBoot 2024.03.27

palworld 서버 만드는 법, dedicated server, 광고 없음, difficulty

https://tech.palworldgame.com/dedicated-server-guide Palworld tech guide tech.palworldgame.com palworld에서 제공해주는 글을 토대로 진행하였습니다. Windows OS 에서 진행하였습니다. 꼭 위 사양이 되지 않아도 되긴 하지만 예전에 묵혀뒀던 노트북에서 서버를 파니 두 세명만 들어와도 서버가 원활하지 않더라구요. 서버를 오픈하기 위한 Dedicated Server 만들기 steam에서 사진과 같은 설정을 한 뒤에 palworld를 검색합니다. Palworld Deicated server를 설치하고 실행하면 됩니다. 실행하면 이 중 원하는 Server를 설정하면 됩니다. commumity server로 설정 한 뒤에 Play..

취미 2024.01.25