728x90 분류 전체보기289 [SpringMVC] 비동기 처리 (with. Async) WAS에서 비동기로 처리하는 방법 Spring은 주로 웹 개발에 사용되기 때문에 비동기 처리가 필요한 경우는 보통 UX개선으로 화면의 블로킹 현상을 방지하기 위해 Client(js)에서 Axios등을 사용하여 비동기로 HTTP 요청을 보내는 방식으로 처리한다. 하지만 아래와 같이 서버(WAS)에서 비동기 처리가 필요한 경우도 있다. 무거운 연산 또는 I/O 작업 처리데이터베이스 쿼리, 대용량 파일 처리, 외부 API 호출 등으로 인해 응답 시간이 길고, 클라이언트가 기다리기 어려운 경우서버에서 비동기로 처리해 자원 낭비와 블로킹을 줄임서버 자원 제한 및 동시성 처리 필요제한된 쓰레드 풀에서 다수 요청을 효율적으로 처리해야 할 때서버 쓰레드가 블로킹 되면 전체 처리량이 떨어지므로 비동기 처리로 극복실시간 .. 2025. 6. 29. [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. [Linux] 웹 서비스 성능 이슈 파악하고 개선하기 배포한 웹 서비스에서 성능 이슈가 발생했을 때 기본적으로 확인 하고 조치할 수 있는 내용이다. 💾 Disk / Memory / CPU 리소스 점검확인 명령어설명조치 방법 iostat -x 1 5디스크 사용률 및 대기 시간 확인 (%util)%util 90% 이상이면 디스크 병목 → 로그 디렉토리 분리, SSD 교체 검토vmstat 1 5시스템 전체 리소스 사용 확인 (us, wa 등)wa가 높으면 디스크 병목, us가 높으면 CPU 과다 → 병목 코드, IO 집중 작업 분리df -h디스크 용량 확인/var/log, /tmp 디렉토리 정리, 오래된 로그, 백업 파일 삭제 등free -h메모리 사용량 확인swap 사용량이 많다면 서버 성능이 저하될 수 있다. 불필요한 process 제거, memory .. 2025. 4. 17. [Linux] 디스크 파티션 검사/복구 하기 (with. Emergency) 서버가 강제로 다운되거나 장애가 발생한 직후 Emergency 모드로 진입하는 경우의 대처 방안. 개요서버 부팅 시 Emergency Mode로 진입하는 경우, 시스템의 주요 파일 시스템 손상 또는 마운트 실패 등으로 인해 정상적인 init 프로세스를 진행할 수 없을 때 발생한다. 이 글은 이러한 상황에 대한 원인 분석, 진단 방법, 복구 절차를 안내한다. 주요 원인원인설명/etc/fstab 오류존재하지 않는 장치를 마운트하려 하거나, UUID 또는 마운트 옵션 오류 등필수 파티션 마운트 실패/, /boot, /usr 등의 파티션이 정상적으로 마운트되지 않음파일 시스템 손상주로 fsck 오류로 감지되며, EXT4 또는 XFS에서 발생 가능디스크 I/O 오류 또는 인식 실패하드웨어 장애, 커넥터 불량, 블.. 2025. 4. 14. [Java] 애플리케이션 배포 시 주의해야 하는 코드 분명 로컬 환경에서는 문제없었는데 서버에 올라가면 버그가 생긴 경우가 한 번쯤 있을 것이다.. IDE를 통해 로컬에서 실행하는 것과 서버에 배포하여 WAS로 실행하는 것에는 환경적인 차이로 다르게 동작하기도 하고 한 쪽에서 되는게 다른 쪽에서는 안되는 경우도 종종 발생한다. 실제 Java기반 서비스를 개발/운영하며 이러한 문제로 고생한 경험을 바탕으로 주의해야 될 부분들을 정리한 내용이다.1. 해시 알고리즘MessageDigest를 사용하여 getInstance로 특정 알고리즘을 사용하여 해시값을 생성하는 경우// 이슈 발생 가능MessageDigest digest = MessageDigest.getInstance("SHA256");// 안정적인 코드MessageDigest digest = Messag.. 2025. 3. 28. [Git] 다중 브랜치 관리 및 동시 작업 (with. worktree) 하나의 프로젝트에서 여러 브랜치를 띄워놓고 동시에 작업할 수 있다 하나의 프로젝트라도 보통 여러 브랜치로 나누어 관리하기 때문에 코드를 비교하거나 병합하는 과정에서 동시에 여러 브랜치를 띄워서 작업해야 하는 상황이 종종 발생한다. 이때 가장 쉬운 방법은 Git에서 동일한 프로젝트를 하나 더 Clone 해서 두개의 프로젝트에서 각각의 브랜치를 띄워놓고 작업하면 된다. 하지만 worktree를 사용하면 하나의 프로젝트에서 여러 브랜치를 효율적으로 관리할 수 있다. 💡 worktree란?Git worktree는 하나의 Git 저장소에서 여러 개의 작업 디렉터리(working directory)를 동시에 관리할 수 있는 기능이다. 이를 통해 개발자는 로컬 환경에서 여러 브랜치를 병렬로 작업할 수 있다. 1.. 2025. 3. 18. [PostgreSQL] 삽입..이미 있다면? 업데이트 (with. upsert) 데이터를 삽입하는데 충돌이 발생하면 충돌한 기존 데이터를 업데이트 하자 💡 UPSERT 란?UPSERT 는 [Insert + Update]의 합성어로, 고유 키나 제약 조건을 기준으로 기존 레코드의 존재 여부를 판단하여 존재하면 UPDATE, 존재하지 않으면 INSERT를 수행하는 복합 연산이다. 주로 사용되는 대부분의 DBMS(MySQL, Oracle, PostgreSQL, Mongo..)에서 고유 문법에 따라 UPSERT를 지원하고 있으며, 실제로도 많이 사용되고 있다. 하지만 SQL 표준 문법은 아니고, 비슷한 기능의 표준 문법으로 Orcle, SQL Server 등에서 MERGE를 지원하고 있다.MERGE는 상대적으로 복잡한 조건의 병합 처리에 유리하고, UPSERT는 충돌 시 단순 삽입/수정 .. 2025. 3. 14. [Linux] 시스템 로그 수집 및 확인하기 (with. rsyslog) 서버의 비정상적인 종료와 같은 장애가 발생할 때 원인을 파악하고 조치하기 위해서는 가장 먼저 시스템 로그를 확인해야 한다. 리눅스에서 시스템 로그를 확인하기 위해서는 표준 프로토콜인 syslog를 사용할 수 있다. 하지만 syslog의 표준을 구현하였고, 훨씬 빠르고 유연한 rsyslog (roket-fase syslog)를 사용하는 것이 더 유리하다. 💡 rsyslog란?정의:rsyslog는 시스템 로그를 수집, 저장, 전달하는 데 사용되는 데몬이다.기능 요약:다양한 입력(커널, 시스템, 애플리케이션)으로부터 로그 수집다양한 포맷으로 로그 저장원격 로그 서버로 로그 전송 가능 (중앙 집중식 로깅) ⁉️ 필요 이유 / 사용 시점문제 해결: 시스템 오류, 장애, 해킹 등 발생 시 원인 분석(서비스 .. 2025. 2. 3. [Git] 특정 커밋 Merge 하기 (cherry-pick) 영어 표현에서 체리 피킹(cherry-picking)은 “체리 농장에서 맛있는 체리만 골라 딴다”는 뜻으로, 필요한 것만 선별적으로 취한다는 뜻이다 Git에서 여러 커밋 내역 중 특정 커밋만 골라서 다른 브랜치로 Merge(병합)하는 작업을 cherry-pick이라고 한다.즉, cheery-pick을 사용하면 해당 브랜치의 전체 히스토리가 아니라 필요한 특정 커밋만 골라서 Merge 할 수 있기 때문에 여러 브랜치(버전)를 관리하는 현업에서 브랜치 관리에 유용하게 사용할 수 있다. Cherry-pick 사용 방법소스 브랜치 : 커밋(소스)을 가져올 브랜치타겟 브랜치 : 커밋 내역을 가져와 병합시킬 브랜치 1. Git pull 받기소스 브랜치와 타겟 브랜치 양쪽 다 pull을 받아 최신 상태를 유지한다. .. 2025. 1. 20. 이전 1 2 3 4 ··· 33 다음 728x90