Linux Crontab 사용하여 Spring Application 로그 파일 날짜별로 백업하기 포스팅 썸네일 이미지

Server/Linux

Linux Crontab 사용하여 Spring Application 로그 파일 날짜별로 백업하기

Crontab이란? 리눅스에서 특정 시간에 명령어를 주기적으로 실행하며 스케줄러 같은 역할을 한다.  [STEP 1] 웹 애플리케이션 로그 저장 경로에 history 디렉터리 생성 $ mkdir {로그 파일 생성 경로}/history$ mkdir /disk/api/project/logs/history해당 디렉터리에 system.log 로그 파일이 생성되고 있는 상황  [STEP 2] 로그 파일 백업해주는 Bash Shell Script 파일을 해당 웹앱이 동작하는 톰캣 하위 디렉터리에 생성 후 작성  $ mkdir /usr/local/tomcat/crontab$ vi /usr/local/tomcat/crontab/log_backup.sh #!/bin/sh# 20240601 형식으로 전 날 Date 값 세..

2024.06.01 게시됨

Slack Chat API 사용하여 슬랙 알림 메시지 전송 포스팅 썸네일 이미지

BackEnd/Spring

Slack Chat API 사용하여 슬랙 알림 메시지 전송

슬랙에서 지원해 주는 Chat API를 사용하여 알림 메시지를 전송해 주는 샘플 코드를 작성해 보겠습니다.[STEP 1] 알림봇으로 사용할 App 생성 api.slack.com/apps 접속 후 Create an App 클릭  앱 이름 및 알람봇을 적용할 Workspace 지정  [STEP 2] 생성한 알림봇에게 권한 부여 좌측 사이드바 Features → OAuth & Permissions 클릭  스크롤 살짝 내려서 Scopes 설정 항목 찾은 후 Add on Oauth Scope 클릭   알림봇에게 channels:read(채널 조회) 및 chat:write(메시지 전송) 권한 부여  [STEP 3] API 사용 시 필요한 토큰 발급받기 좌측 사이드바 Settings → Install App → In..

2023.02.27 게시됨

Spring Gradle logback.xml 설정하여 로그 파일 저장하기 포스팅 썸네일 이미지

BackEnd/Spring

Spring Gradle logback.xml 설정하여 로그 파일 저장하기

백엔드 개발을 하면서 가장 중요하다고 느꼈던 부분 중 하나가 로그인 것 같습니다. 아무리 체크리스트를 작성하여 다양한 케이스의 테스트를 하더라도 실제 운영기에 배포 후 예상치도 못한 시스템 오류가 발생하여 클라이언트로부터 해당 사실을 전달받는 경우가 있는데, 이때 빠르게 확인할 수 있는 로그와 시스템 로그 두 가지가 있다면 원인 추적하는 시간이 생각보다 꽤 줄어드는 것 같습니다. logback.xml 파일을 설정하여 custom.log 와 system.log 두 개의 로그 파일을 저장해보도록 하겠습니다. [STEP 1] build.gradle 파일에 logback 관련 dependencies 추가 // logback implementation group: 'ch.qos.logback', name: 'lo..

2022.11.12 게시됨

Apache2 + Tomcat + Spring http2 프로토콜 적용 포스팅 썸네일 이미지

Network

Apache2 + Tomcat + Spring http2 프로토콜 적용

http2 프로토콜을 사용해야 하는 이유는 https://www.httpvshttps.com/ 링크에서 http/1.1과 http2 프로토콜의 차이를 확인하실 수 있습니다. 해당 웹페이지는 단순히 https를 적용해서 빠른 것이 아니라 http2 프로토콜을 적용해주었기 때문에 속도가 빨라진 것입니다. 기존 http에서 https로 암호화를 추가했다면 속도가 더 느려지는 것이 정상입니다. 이를 보완하기 위해 http2 프로토콜이 개발되었고, 심지어 구글은 현재 UDP 기반의 http3 프로토콜을 도입하였습니다. http2 프로토콜 적용은 CentOS7 Apache2에 Let's Encrypt으로 SSL 인증서 무료 발급받기 포스팅 이후 이어지는 글임을 참고해주시기 바랍니다. [STEP 1] mod_http..

2022.11.11 게시됨

Tomcat Web Application very likely to create a memory leak 포스팅 썸네일 이미지

Tomcat

Tomcat Web Application very likely to create a memory leak

개발 도중 Spring Application War 파일을 지속적으로 재배포하는 경우가 빈번하게 발생하였는데, 어느 순간부터 War 파일 재배포 시 해당 오류가 발생하고 애플리케이션이 정상적으로 작동하지 않는 등 당황스러운 상황을 맞았다. 원인: 대체로 웹 애플리케이션을 너무 많이 Update 하거나 Reload 한 것이 원인이다. Tomcat과 JVM은 웹 애플리케이션을 삭제하고 다시 생성할 때 할당한 모든 메모리를 해제하지는 않는다. 따라서 웹 애플리케이션을 여러 번 Reload 하면 할당된 메모리가 바닥나서 동작하지 않게 된다. 해결 : 당장 해결 방안은 톰캣을 재시작하는 것이며, 앞으로도 웹 애플리케이션을 빈번하게 Reload 해야 할 상황이라면 톰캣이 할당할 수 있는 메모리를 늘려준다.[STEP..

2022.11.11 게시됨

Spring HikariPool Failed to validate connection 포스팅 썸네일 이미지

BackEnd/Spring

Spring HikariPool Failed to validate connection

Hikari CP와 DataBase의 Connection 관계 이해도가 낮아 해당 오류를 해결하는데 시간이 조금 걸렸다. 원인 : Hikari CP에선 Thread가 Connection을 요청하면 최초 연결 이후 해당 Connection을 CP(Connection Pool)에 담아놓고 재요청이 들어왔을 때 담아두었던 해당 Connection을 연결해준다. 불필요한 Connection 시도를 줄일 수 있어 효율적이지만 DataBase에서 Connection을 끊어버리면 Hikari CP에선 해당 사실을 알 수가 없어 연결 중이라 착각하고 끊긴 Connection을 연결해주는 과정에서 발생하는 오류이다. 해결 : 위 로그 내용 중 Possibly consider using a shorter maxLifeti..

2022.11.11 게시됨