▼ Backend/스프링 (Spring)
-
Spring Boot | bootWar, war 내,외장 톰캣으로 실행하기▼ Backend/스프링 (Spring) 2023. 2. 27. 17:36
개요 스프링 부트 war 패키징 프로젝트를 bootwar, war로 빌드하여 내장·외장 톰캣으로 실행해본다. 내장·외장 톰캣의 성능 내장·외장 성능에 대해서 유의미한 큰 차이는 없다고 한다. 하지만 외장 톰캣에서 virtual host 같은 기능의 구성 시 간단하게 적용 가능하다. virtual host 도메인 host에 따라 각각의 다른 루트 컨텍스트를 갖게하여 하나의 웹 애플리케이션 배포만으로 마치 여러 애플리케이션을 운영하는것처럼 하는 기능 bootWar 내장·외장 톰캣 실행 가능 war 외장 톰캣으로만 실행 가능 패키지 구성의 차이 bootWar의 경우, 내장 톰캣으로 실행이 가능 하게 해주는 WEB-INF > lib-provided 구성이 존재한다. bootWar war WEB-INF WEB-I..
-
Spring Boot | Prometheus + Grafana 모니터링▼ Backend/스프링 (Spring) 2023. 2. 10. 15:21
모니터링 시스템 구축 스프링 부트 웹 애플리케이션을 배포한 뒤 프로메테우스, 그라파나로 모니터링 시스템을 구축한다. 구성환경 Spring Boot, Gradle, Docker Prometheus Metrics를 수집하고 모니터링 및 알람에 사용되는 오픈소스 애플리케이션 Pull 방식의 구조와 다양한 Metrics Exporter 제공 시계열 DB에 Metrics 저장 -> 조회 가능 Grafana 데이터 시각화, 모니터링 및 분석을 위한 오픈소스 애플리케이션 시계열 데이터를 시각화하기 위한 대시보드 제공 build.gradle implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation 'io.micrometer..
-
Spring Boot | Redis로 세션 클러스터링 적용하기▼ Backend/스프링 (Spring) 2023. 2. 3. 16:31
프로젝트에 세션 로그인 처리가 되어있는 가정하에 진행되었습니다. Spring Boot | 로그인 구현하기 (Spring Security) 들어가기에 앞서.. 다양한 방식의 세션 클러스터링 방법이 있지만 해당 프로젝트는 jar로 패키징되는 내장형 톰캣 실행으로 별도의 WAS 없이 실행합니다. 그리고 스프링 부트에서는 간단한 방법으로 Redis를 통해 세션 정보를 등록하는 방법을 사용할 수 있습니다. 📌 Redis 설치 방법 윈도우 10 | Redis(레디스) 설치 및 기본 명령어 도커 | Redis(레디스) 생성 및 redis-cli 접속 하기 build.gradle implementation 'org.springframework.boot:spring-boot-starter-data-redis' imple..
-
Spring | IOC, DI, Bean▼ Backend/스프링 (Spring) 2023. 1. 28. 14:55
🌈 Spring IOC, Container, DI, Bean? 스프링을 사용하다 보면 꾸준히 들어오던 용어들이다. 이 장에서는 그 개념에 대해서 알아보고 정리해 본다. IOC (Inversion of Control) 제어의 역전이라 부른다. 아래에서 컨테이너와 함께 설명한다. Container (컨테이너) 컨테이너는 보통 객체의 생명주기, 생성된 인스턴스들에게 추가적인 기능을 제공한다. 스프링 컨테이너는 의존성도 관리한다. Spring IOC Container - 스프링 IOC 컨테이너 스프링은 스프링 IOC 컨테이너에서 객체를 관리하는데, 이때 스프링이 제어 권한을 가져 객체 생성, 관계, 의존성, 생명주기 관리 하는데 이때 생성된 객체를 Bean이라고 한다. 이 Bean들은 싱글톤으로 관리된다. 즉,..
-
Spring Boot | JPA, 다중 데이터베이스 구성하기▼ Backend/스프링 (Spring) 2022. 5. 25. 16:31
구성환경 Spring Boot 2.7.0, MariaDB 10.5.13 기존에 하나의 데이터 소스를 통해 정상 작동하는 프로젝트에서 2개 이상의 데이터 소스를 사용하기 위해 작성된 내용입니다. 기본 스프링 부트 데이터베이스 연동은 데이터베이스(MariaDB) 연동 및 JPA CRUD을 참고해주세요. application.yml 2개의 datasource를 설정합니다. (2개 이상 필요시 이름을 다르게 해서 추가) spring: datasource: driverClassName: org.mariadb.jdbc.Driver jdbcUrl: jdbc:mariadb://localhost:3306/first_database username: admin password: password!@# second-datas..
-
Spring Boot | application.properties(yml) 환경에 맞게 분리하기▼ Backend/스프링 (Spring) 2022. 5. 13. 17:30
📌 구성환경 Mac OS, IntelliJ Community, Gradle, Jar 기존에 스프링 부트 프로젝트 생성 시 존재하는 application.properties(yml)은 default로 지정되는 설정 파일로 추가로 생성하여 환경에 맞게 분리 및 지정하여 배포할 수 있다. 이렇게 배포하면 MSA(MicroService)에 사용되는 Config Server에서도 유연하게 사용이 가능하다. application.yml 파일을 복사해서 아래 이미지처럼 local, dev, prod으로 이름을 변경해 추가한다. local: 현재 사용하는 로컬 환경 dev: 운영서버에 올라가기 전 테스트를 하기 위한 개발서버 환경 prod: 실제 사용자가 사용하는 운영 서버 환경 각 환경에 맞게 프로퍼티 파일을 분리했..
-
Spring Boot | 간단하게 AOP 적용하기▼ Backend/스프링 (Spring) 2022. 5. 9. 16:37
Spring AOP (Aspect Oriented Programming) AOP란 관점 지향 프로그래밍이라고 하며 어떤 로직을 기준으로 핵심, 부가적인 관점으로 나누어서 어떤 관점을 기준으로 모듈화 하는것으로 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다. 📌 Dependency 추가 Maven org.springframework.boot spring-boot-starter-aop Gradle implementation 'org.springframework.boot:spring-boot-starter-aop' Java Code Application 클래스에 @EnableAspectJAutoProxy 추가 // Aop 활성화 @EnableAspectJAutoProxy @Spr..
-
Spring Boot | Schedule cron 표현식▼ Backend/스프링 (Spring) 2022. 3. 28. 10:11
자릿수 마다의 의미 (총 7자리) 초 / 분 / 시 / 일 / 월 / 요일 / 년도 (생략가능) // 사용 예 (매일 12시에 실행) @Scheduled(cron = "0 0 12 * * *") 표현식 표현식 의미 0 0 12 * * * 매일 12시에 실행 0 15 10 * * * 매일 10시 15분에 실행 0 * 14 * * * 매일 14시에 0분~59분까지 매분 실행 0 0/5 14 * * * 매일 14시에 시작해서 5분 간격으로 실행 0 0/5 14,18 * * * 매일 14시, 18시에 시작해서 5분 간격으로 실행 0 0-5 14 * * * 매일 14시에 0분, 1분, 2분, 3분, 4분, 5분에 실행 0 0 20 ? * MON-FRI 월~금일 20시 0분 0초에 실행 0 0/5 14 * * ? ..