728x90 분류 전체보기297 [PostgreSQL] 서버 리소스 최적화와 경량화된 Connection Pooling: pgBouncer 도입 PostgreSQL에 직접적으로 연결하지 말고, pgBouncer 커넥션 풀을 통해 관리하자 서버 리소스 최적화회사 내부 개발서버를 장기적으로 운영하다 보면 시간이 흐를수록 캐시, 데이터 등이 계속 쌓이며 Disk, Memory를 차지하게 되고.. 여러 개발자들이 사용하며 다양한 애플리케이션을 구동시키기 때문에 Cpu 사용량도 계속해서 증가 할 것이므로 주기적으로 정리가 필요하다. 1. DB(Elasticsearch) 오래된 데이터 정리 💾서비스에 따라 다양한 Database를 사용하겠지만 Elasticsearch(nosql)와 Postgres(rdb) 기준으로 본다면 Postgres는 RDB로 보통 설정 값이나 사용자 정보 등 일정한 데이터를 저장하는 용도로 사용하기 때문에 시간이 지나도 용량이 매우.. 2025. 9. 20. [SpringBoot] 배치 애플리케이션 종료되지 않는 현상 (with. Connection Pool) Batch 작업이 끝났는데 왜 Application이 정상적으로 종료되지 못할까..? SpringBoot를 사용해 배치 애플리케이션을 개발하는 도중 분명 배치 작업이 끝났는데 애플리케이션(프로세스)가 종료되지 않는 현상이 발생하였다. 왜 애플리케이션이 종료되지 않은 것일까? 💡Elasticsearch Client의 Connection pool이 살아있어 jvm이 종료되지 못한 것 이었다.우선 애플리케이션이 정상적으로 종료되지 않는 이슈가 발생할 때 확인하는 방법에 대해 알아보자.작업이 끝났는데 종료되지 않으면 대부분 스레드가 문제다.. 특히 Non-daemon 스레드는 jvm이 강제로 종료시킬 수 없기 때문에 jvm이 종료되지 못하는 원인이 된다. ✅ jvm 프로세스에 의해 실행중인 스레드 확인하기jp.. 2025. 8. 24. [Docker] 컨테이너 이미지 생성(복제) 운영중인 컨테이너 환경을 그대로 백업하거나 복제해야 하는 경우 이미지로 저장할 수 있다. 요즘은 개발, 테스트, 운영 등 대부분의 작업을 도커 컨테이너 환경에서 하는 것 같다. 이 이유는 환경 일관성, 리소스 효율성, 이식성 등 다양한 이점이 있기 때문이다. 컨테이너 환경을 사용중이라면 컨테이너(서버) 환경을 그대로 백업하거나 복제하여 사용할 수 있다. 이렇게 컨테이너를 도커 이미지로 저장하는 있는 기능은 이러한 도커의 장점을 극대화할 수 있는 중요한 기능 중 하나이다. 컨테이너를 이미지로 저장하면, 해당 시점의 상태 설정, 실행 중인 서비스, 내부 데이터 등을 그대로 캡처하여 보존할 수 있다. 이 이미지를 다른 환경에 배포하거나, 백업용으로 보관하거나, 장애 발생 시 롤백용으로 활용할 수 있어 운영 안.. 2025. 7. 31. [SpringFramework] IoC 원칙에 위배되는 static 키워드? 📌 Spring에서 static 키워드를 지양해야 하는 이유Java를 사용할 때 static 키워드는 클래스 레벨에서 공유되는 변수 또는 메서드를 정의할 때 자주 사용된다. 대표적으로 static 메서드는 객체 생성 없이 호출할 수 있고, static 변수는 클래스 로딩 시 메모리에 올라가 하나의 값만을 공유하게 된다. 하지만 Spring Framework에서는 이러한 static 사용이 프레임워크의 철학 및 동작 방식과 충돌하며, 불필요하거나 문제가 될 수 있다. 1. Spring은 IoC 기반 프레임워크 • 객체 생성, 생명주기 관리, 의존성 연결 등을 개발자가 아닌 Spring 컨테이너가 제어한다. • 즉, 객체 인스턴스는 컨테이너가 주입하고 관리해야 하며, 필요한 구성은 모두 빈 단위로 주입 가.. 2025. 7. 28. [Database] SnowFlake 알고리즘 : 대규모 분산 환경에서의 고유 ID 전략 관계형 데이터베이스를 설계할 때 PK를 어떤 값을 지정해야 할지 항상 고민될 것이다. 대규모 트랜잭션 환경에서 유리한 단일 PK 전략을 세우기 위해 snowflake 알고리즘을 알아보자 1. 왜 Snowflake 알고리즘을 써야 할까? 🤔대규모 분산 서버 환경에서 고유한 ID를 생성하는 건 꽤 까다로운 문제다. 기존에는 DB의 AUTO_INCREMENT 기능에 의존해 ID를 생성했는데, 이 방식은 DB에 부하가 집중되어 트래픽이 몰리면 병목 현상이 발생할 수 있다.즉, DB 락 경합으로 인해 전체 서비스가 느려지거나 심지어 중단될 위험도 있다.또한, UUID 같은 랜덤 ID를 사용하면 고유성은 보장되지만, ID가 길고 무작위라서 인덱싱 효율이 떨어지고 조회 성능도 저하된다.이처럼 단일 DB 의존, 성능.. 2025. 7. 27. [SpringMVC] 비동기 처리 (with. Async) WAS에서 비동기로 처리하는 방법 Spring은 주로 웹 개발에 사용되기 때문에 비동기 처리가 필요한 경우는 보통 UX개선으로 화면의 블로킹 현상을 방지하기 위해 Client(js)에서 Axios등을 사용하여 비동기로 HTTP 요청을 보내는 방식으로 처리한다. 하지만 아래와 같이 서버(WAS)에서 비동기 처리가 필요한 경우도 있다. 무거운 연산 또는 I/O 작업 처리데이터베이스 쿼리, 대용량 파일 처리, 외부 API 호출 등으로 인해 응답 시간이 길고, 클라이언트가 기다리기 어려운 경우서버에서 비동기로 처리해 자원 낭비와 블로킹을 줄임서버 자원 제한 및 동시성 처리 필요제한된 쓰레드 풀에서 다수 요청을 효율적으로 처리해야 할 때서버 쓰레드가 블로킹 되면 전체 처리량이 떨어지므로 비동기 처리로 극복실시간 .. 2025. 6. 29. [SpringFramework] Data 변경을 감지하여 실시간 정보 제공하기 사용자에게 실시간 정보를 제공하기 위해서는 어떤 방법들이 있을까? 시간에 따라 데이터가 빠르게 변화하는 현대 사회에서는 다양한 분야에서 최신 데이터를 빠르게 확인하는 것이 매우 중요해졌다. 주식 거래, 채팅, 금융 서비스 등의 서비스에서 데이터 갱신은 꼭 필요한 기능이며, 구현 방식에 따라 사용자 경험에 많은 영향을 끼칠 수 있다. 사용자가 데이터의 변경사항을 최대한 빠르게 확인할 수 있는것이 가장 좋겠지만.. 무조건 실시간으로 빨리 처리하는게 좋다고 할 수는 없다. 서비스 유형에 따라 약간의 지연도 있으면 안되는 주식 거래 같은 기능일 수도 있고, 어느정도의 데이터 지연은 감수할 수 있지만 시스템 리소스가 더 중요한 기능일 수도 있기 때문이다. 데이터 지연 시간과 처리 방법에 따라 실시간(Real ti.. 2025. 6. 15. [Git] Svn 프로젝트 Git으로 마이그레이션 하기 (git svn) 개인 프로젝트라면 그냥 프로젝트를 복사해서 Git으로 올려도 되지만.. History, Branch 등의 관리를 위해 마이그레이션 하는 것을 권장한다. Git이 설치된 환경에서 PowerShell을 관리자 권한으로 실행하여 진행한 내용입니다.git svn --version위 명령어가 정상 출력되면 git-svn 플러그인이 설치된 것이다.설치되어 있지 않다면 Git을 재설치하거나 https://git-scm.com 에서 설치 확인 🛠️ 1. SVN → Git 변환 (로컬 저장소 생성)git svn clone http://svn.example.com/project --stdlayout --authors-file=authors.txt my-git-project 옵션 설명--stdlayout: SVN의 표준.. 2025. 5. 15. [Docker] 컨테이너 환경 모니터링 시스템 구축하기 (Prometheus + Grafana) Prometheus, Grafana, cAdvisor, node-exporter를 사용하여 Docker 호스트와 컨테이너들을 모니터링 하는 방법. Docker 호스트로 사용되는 서버의 리소스와 컨테이너들을 모니터링하기 위해 리서치 해보았을 때 서버를 모니터링하기 위한 다양한 툴이 있지만 가장 많이 사용되는 조합은 역시 Prometheus & Grafana였다. Prometheus & Grafana는 다른 경량 모니터링 툴 보다 다소 무거울 수 있지만, 보다 정밀한 데이터 수집, 장기 저장, 알림 기능 등 강력한 기능을 제공한다. 특수한 경우가 아니라면 커스텀 없이도 기본값으로 충분히 활용할 수 있기 때문에 초기 구축도 크게 어렵지 않으며, 레퍼런스나 정보도 많고, 다양한 대시보드 소스를 활용할 수 있.. 2025. 4. 22. 이전 1 2 3 4 ··· 33 다음 728x90