5장 설정, 검사

자동설정리포트 Autoconfigration Report

빈이 생성 여부를 디버그할 때 application.propertiesdebug=true 한줄 추가. 스프링부트가 match된 것은 생성, 또는 생성하지 않은 것을 로그로 볼 수 있음. 로그에unconditional classes은 프레임워크의 Core라서 match없이 무조건 생성한다고 생각하면 됨.

액추에이터 Actuator

웹 실행환경을 갖춘 스프링부트의 가동하에 특정한 엔드포인트로 접근해서 앱의 모니터링, 디버그 정보를 응답받을 수 있게 해주는 http 접근경로로 생각하면 되겠다. 보안 때문에 내부만 열어둔다. 실시간 로깅레벨 조정이 가능

6장 데이터

레디스 Redis

In Memory 기반 Cache DB이다. 메인 DB의 부하를 저감하기 유투브 조회수 카운트처럼 빈번한 IO가 발생하는 것을 중간에 대신 담당하고 한번에 모아서 처리할 수도 있게 만든다. 세션관리할 때도 사용.

  • p125의 @JsonIgnoreProperties(ignoreUnknown=true)은 boot의 기본설정이므로 굳이 할 필요 없다. ref.blog
    • 또한 @JsonProperty(“Json Key이름”)로 지정하는 방법보다 @JsonNaming을, 매핑전략을 쓰면 좀 더 간단해진다.

Redis는 Spring boot 에서 사용할 때 2가지 방법으로 나눠서 사용한다. 각자 추상화 정도의 차이가 있으며 이점에 따라 사용할 수 있다.

  1. RedisTemplate : Bean으로 생성하고 설정 후 사용한다. serializer지정해줘야 사용이 가능하다.
  2. RedisRepository : 다른 설정 필요없이 CrudRepository<?,?>를 상속받아서 사용하면된다. 첫번째 ?에는 @RedisHash로 지정한 Type을, 두번째는 @Id 멤버변수의 Type을 지정한다. 여기서 @Id의 ClassPath는 org.springframwork.data.annotation.Id이다.
폴링 Polling

짧은 시간 단위로 데이터를 반복요청하는 것을 의미한다. 스프링에서는 간단히 주기 반복 Scheduling을 @EnableScheduling@SpringBootApplication자리에 추가하고 원하는 메소드에 @scheduled를 지정한 후, 메소드가 원하는 데이터를 요청하게 구현하면 된다.

앱 시드 데이터 채우기 Filling sead data into App

운영에 필요한 초기 persist data를 앱 실행시 initialize하는 전략의 예로 2가지가 있다.

  1. sql script file로 채우기
    • Spring에서 정해놓은 file name, directory name으로 script file을 저장하고 configuration
  2. hibernate로 @Entity Class 및 Repository로 채우기

스프링MVC로 만드는 애플리케이션

MoM (RabbitMQ, Kafka)

메세지 지향 미들웨어로 end to end 방식의 데이터 교환방식이 아니라 중앙에서 교환되는 메시지 창구를 만들어 둔 것. producer 서비스가 메세지를 MoM로 보내고 consumer 서비스에서 해당 메세지를 읽어올 수 있게 아키텍처를 구성할 수 있다. 메세지를 MoM에서 중앙집중화 되게 관리할 수 있고. 보낼 메세지가 정해진 경우 서비스가 다른 서비스에게 요청하는 것보다 더 빠르게 데이터를 제공받을 수 있는 장점이 있다. 나는 분명 좋은 기술이고 언젠간 배워야겠지만 좀더 규모있는 애플리케이션을 설계할 때 좋을 것이라고 생각했다. 스프링웹에 대해 좀 더 집중해야하지 않나 생각한다. 이런 기술은 나중에 배워야겠다고 생각했다.

#####