Spring

· Spring
스프링 배치(Spring Batch)란? Spring Batch는 엔터프라이즈 시스템의 운영에 있어 대용량 일괄처리의 편의를 위해 설계된 가볍고 포괄적인 배치 프레임워크다. Spring의 특성을 그대로 가져왔기 때문에 DI, AOP, 서비스 추상화 등 Spring 프레임워크의 3대 요소를 모두 사용할 수 있다. 보통 아래와 같은 경우 많이 사용한다. 대용량의 비즈니스 데이터를 복잡한 작업으로 처리해야하는 경우 특정한 시점에 스케쥴러를 통해 자동화된 작업이 필요한 경우 (ex. 푸시알림, 월 별 리포트) 대용량 데이터의 포맷을 변경, 유효성 검사 등의 작업을 트랜잭션 안에서 처리 후 기록해야하는 경우 Spring Batch는 로깅/추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 건너뛰기, 리소스 관..
· Spring
H2 Database란? H2DB는 자바 기반의 오픈소스 관계형 데이터 베이스 관리 시스템(RDBMS)이다. H2DB는 서버(Server) 모드와 임베디드(Embedded) 모드의 인메모리 DB 기능을 지원하고 디스크 기반 테이블을 또한 생성할 수 있다. 또한 브라우저 기반의 콘솔모드를 이용할 수 있으며, 별도의 설치과정이 없고 용량도 2MB(압축버전) 이하로 매우 저용량 이므로 매우 가볍고 빠르며, JDBC API 또한 지원하고 있다. SQL 문법은 다른 DBMS들과 마찬가지로 표준 SQL의 대부분이 지원된다. In-memory Database란? 데이터를 디스크에 저장하는 Mysql이나 Oracle과 같은 DBMS와는 다르게 데이터 스토리지의 메인 메모리에 설치되어 운영되는 방식의 데이터베이스 관리 ..
· Spring
보통 기본적인 유효성 검증은 Validation 어노테이션들로 설정한다. 만약 더 섬세한 유효성 검증이 필요할때는 자신만에 어노테이션을 만들어 설정할 수 있다. 만약 연락처 필드의 유효성 검증(PhoneValidator)을 만든다고 가정해보겠다. // @Phone 어노테이션 @Inherited @Documented @Repeatable @Constraint(validatedBy = PhoneValidator.class) @Target({ ElementType.METHOD, ElementType.FIELD }) @Retention(RetentionPolicy.RUNTIME) @ReportAsSingleViolation public @Interface Phone { Stirng message() defaul..
· Spring
사이드 프로젝트를 진행하면서 Test Results에 결과만 나와서 어떤 Test를 했는지 확인이 불가했다. 요게 Run Test를 할때 Gradle을 기준으로 Test를 진행하기 때문에 목록이 보이지 않는것이다. 기준을 IntelliJ IDEA로 변경하게 되면 Test를 진행한 목록이 잘나온다. Run tests using을 InteilliJ IDEA로 변경해주고 다시 테스트를 해보면 목록이 잘 나온다.
· Spring
이 전 블로그 글에서 Spring Boot 프로젝트를 생성하고 Prometheus와 연동까지 해봤다. 이제 Grafana를 연동해 시각화를 해보자. Grafana 설치 및 사용 Grafana 역시 도커로 설치하겠다. docker run -d -p 3000:3000 --name grafana grafana/grafana 설치 후 컨테이너가 실행됫으면 http://localhost:3000에 접속해보면 grafana 홈페이지에 접속될 것 이다. 초기 로그인은 admin/admin으로 접속해 비밀번호를 바꾸면 된다. 이제 Data source를 추가해 Prometheus와 연동해보자 전 블로그 글에서 접속했던 http request들이 확인되면 정상적으로 연동이 된 것이다. 전체 코드는 아래 GitHub에서 ..
· Spring
Prometheus, Grafana에 대한 것은 이전 블로그글에서 확인하면 된다. Spring Boot Project 생성 및 설정 Spring Boot Project(Gradle)를 생성하고 build.gradle에 의존성을 주입해준다. dependencies { ... implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation 'io.micrometer:micrometer-core' implementation 'io.micrometer:micrometer-registry-prometheus'..
· Spring
프로젝트 중 모니터링 시스템을 구현해보려고 한다. Prometheus + Grafana를 이용해 Spring Boot 애플리케이션을 모니터링 해 볼 것이다. 모니터링 시스템은 너무많은 종류가 있어서 본인이 사용하고 싶은것으로 사용해도 좋을듯하다. 추후에는 cAdviser도 연동해 컨테이너 모니터링까지 해볼 예정이다. 먼저 Prometheus, Grafana가 무엇인지 간단하게 알고 가자. Prometheus Prometheus는 SoundCloud사에서 만든 오픈소스 시스템 모니터링 및 경고 툴킷이다. 지금은 독립형 오픈소스 프로젝트이며 많은 회사들이 사용 하고 있고, 또한 kubernetes에서도 Prometheus를 사용하여 매트릭 수집 및 대시보드 구축하는 방식을 장려하고 있다. Jobs/expor..
· Spring
FCM란? Firebase 클라우드 메시징(FCM)은 무료로 메시지를 안정적으로 전송할 수 있는 교차 플랫폼 메시징 솔루션이다. 간단히 말해서 무료로 웹, 앱에 푸시를 보낼 수 있는 플랫폼이다. 사용법 Firebase console에 접속해 프로젝트를 생성한다. 프로젝트 설정 -> 서비스 계정 -> 새 비공개 키 생성 다운받은 비공개 키를 resources 하위로 이동 Firebase의존성 추가 dependencies { ... // Firebase SDK implementation 'com.google.firebase:firebase-admin:6.8.1' ... } 엔드포인트 확인 프로젝트 설정 -> 일반에 프로젝트 ID를 확인할 수 있을것이다. 요 프로젝트 ID를 서버 엔드포인트에 넣어줄것이다. 엔..
· Spring
@Null / @NotNull 값이 null이거나(@Null) Null이 아닐때(@NotNull)를 검증한다. @NotNull로 설정 시 String의 ""(빈값) 값도 통과된다는 것을 주의하자. @Min(value) / @Max(value) 숫자(정수)를 입력하는 필드에서 입력 가능한 값의 최솟값(@Min)과 최댓값(@Max)을 설정한다. 예) @Min(100), @Max(99999) @DecimalMin(value) / @DecimalMax(value) 이것도 최솟값(@DecimalMin), 최댓값(@DecimalMax)을 설정하지만 정수가 아닌 BigDemical이나 BigInteger 객체 또는 String 값으로 숫자를 설정하는 경우에 사용한다. @Min, @Max도 String 값이나 Deci..
· Spring
사이드 프로젝트를 만들며 소셜 로그인의 OAuth2.0 인증방식을 개발해보려고 한다. 인터넷에 소개되어있는 블로그 글들은 서칭 후 코딩해보고 정리하였다. 카카오, 네이버, 구글만 구현할것인데 나머지 소셜들도 대부분 비슷하다고 보면 된다. OAuth2.0란? 아래글 참조 OAuth2(Open Authentication2) OAuth2란? 다양한 플랫폼 환경에서 인증 및 권한 부여를 위한 표준 프로토콜 OAuth 방식이 등장하기 전에는 다른 서비스의 리소스를 가져오기 위해서는 다른 사이트의 ID와 PW를 직접 입력받아 저장 devbksheen.tistory.com 1. Build Setting build.gradle Spring Boot는 2.3.1.RELEASE 버전을 사용했다. plugins { id '..
beekei
'Spring' 카테고리의 글 목록 (2 Page)