본문 바로가기

토이프로젝트12

[배포 #1] Git Action을 이용한 배포 (CI/CD 파이프라인 , 무중단배포 X) ▶ Spring Boot 프로젝트 배포 흐름도 & GitHub Actions 활용 CI/CD 구축 Docker 기반 자동 배포를 구축한 실제 프로젝트를 바탕으로 배포 과정을 정리▶ 일반적인 배포 과정1. 서버 환경 구성JDK 설치 및 환경변수 등록디렉터리 구성GitHub/SVN 연동2. 소스 최신화 및 BuildGradle or Maven 빌드jar 생성 시: java -jar [파일명] 으로 실행war 생성 시: Tomcat 서버에 배치 ▶ 자동화된 배포 방식 개요소스 저장소(GitHub, SVN 등)에서 이벤트(푸시/PR) 발생빌드 트리거 감지 → 빌드 파일(또는 Docker 이미지) 생성 → 운영 서버에 전송 적용 (또는 Docker 실행)파일 변경 및 Docker 이미지 변경 후 재배포 시 약간의.. 2025. 4. 19.
[Log #2] LogBack을 이용한 로그 설정 LogBack- Spring Boot에서 로그를 다룰 때 가장 많이 쓰는 로깅 구현체는 Logback- logback-spring.xml을 이용하면 로그 포맷, 출력 방식, 파일 보관 정책 등을 유연하게 설정 가능. 로그 출력 경로 제어클래스 종류설명ConsoleAppender콘솔에 출력FileAppender고정된 파일에 저장RollingFileAppender시간/용량 기준으로 파일 분리 저장SMTPAppender메일 전송용DBAppenderDB에 로그 저장용 로그 Level정의OFF로그 기록 안 함FATAL시스템 치명적 오류ERROR예상하지 못한 오류WARN경고, 주의 필요INFO운영 중 참고용 메시지DEBUG개발 중 디버깅 정보TRACE가장 세세한 단계의 로그 로그 롤링 정책 (파일 관리)> file.. 2025. 4. 7.
[Page처리 #3] 성능 차이 비교하기 (OFFSET, CURSOR) 공통 Total Count SQL@Query(value= "SELECT COUNT(*) " + "FROM Temperature t") Integer getTotCnt(); 일반적인 OFFSET 계산하기현재 페이지의 데이터 출력Total Count를 이용하여 전체 페이지 수 출력//Servicepublic Map findBasicPage(int currentPage, int limit){ Map map = new HashMap(); int offset = (currentPage - 1) * limit; map.put("content", temperatureRepository.findByPage(limit, offset)); map... 2025. 4. 7.
[예외처리 #1] 예외(Exception) 이해하기 머릿속에 있는 개념을 정리하는 블로그 글입니다. (개인적인 주관이 포함되어있습니다.)개념 정보가 정확하지 않을 수 있으므로, 참고만 부탁드립니다. 예외(Exception)가 왜 필요할까?( 개인적인 경험 )'예외'라는 단어는 사전적으로 "일반적인 규칙이나 통례에서 벗어나는 것"을 의미합니다. 개발을 하다 보면 "예외를 처리해야 한다"는 말을 자주 듣게 됩니다. 누구나 처음에는 자신이 생각한 방향대로 코드를 작성하지만, 모든 것이 계획대로만 흘러가지는 않습니다. 처음에는 "100% 문제가 발생하지 않을 것"이라는 막연한 자신감으로 예외 처리를 깊이 고민하지 않았습니다.하지만, Java에서 기본적으로 제공하는 예외 처리 기능 덕분에 지금까지 큰 불편 없이 개발할 수 있었습니다. 예외가 발생하면 함수 호출 스.. 2025. 3. 13.
[Spring-Resource] 스프링 Resource의 이해 (+ InputStream) * 요약 정보 *[Resource]- Resource는 인터페이스이다.- Resource를 사용하여, 기본적인 파일 상태값 또는 파일 여부를 파악이 가능하다- Resource 혹은 직접 작성하여 InputStream을 이용하여 제어할 수 있다[InputStream]- InputStream도 추상화된 추상클래스- FilterInputStream에서는 감싸기 기능이 추가된 InputStream이며, Resource와 결합하여 사용할 수 있다.- FileInputStream을 이용하여 파일제어가 가능하다. (이외에도 InputStream 구현체를 이용하여, 바이트 제어 및 오디오, 역직렬화, 스레드간의 통신이 가능)** 결론) 바이트 및 내용을 수정하는 것은 InputStream 클래스, 경로 및 상태값 확인.. 2025. 2. 24.
[File I/O] 파일 라이브러리 이해하기 (File, Files, Path, Paths) 구조FileJava 17 기준PathsPathFiles파일 관련 라이브러리Path의 유틸리티 라이브러리파일 경로 인터페이스파일관련 라이브러리파일 생성,삭제,수정 가능get() 메서드를 이용하여 경로 생성상대경로, 절대경로, 경로 결합 등 손쉽게 이용기존 File에서 제공되는 유틸 메서드 제공파일 심볼링 링크 및 고급기능 제한 기존 File객체와 호환 가능 ( toFile(), toPath() )추가적인 File관련 유틸 메서드 제공 (파일트리순회, 심볼릭 링크, 고급 기능 가능)예외처리 미흡  예외처리 강화 (IoException)   watch Service(디렉터리 변경 감시를 이용하여 이벤트 처리 가능) * 해당 Paths, Path, Files를 NIO(New I/O) API라고 불리움   Fil.. 2025. 2. 13.