나누고 싶은 개발 이야기

Data Engineer로서 기록하고 공유하고 싶은 기술들. 책과 함께 이야기합니다.

Framework 8

[spring boot] spring boot configuration 이해

spring boot는 spring의 설정을 편리하게 하고 실행가능한 어플리케이션을 만들어주는 프레임웍이다. spring 사용을 간단하게 한 일등공신이다. 필자도 처음 spring을 접할 때 복잡한 설정 때문에 힘들다는 이야기를 많이 들었는데, spring boot가 나온 뒤로 너무 간편하게 어플리케이션이 실행되서 그 동작 방식에 궁금해 했었다. 그 동작방식을 분석한 글을 보았는데 이 블로그은 해당 내용을 정리하였다. spring boot 설정의 비밀은 @EnableAutoConfiguration에 있다. @EnableAutoConfiguration 어노테이션은 spring boot가 클래스 경로에서 찾은 바에 따라 애플리케이션이 필요로 하는 모든 bean을 자동으로 로드한다. @Enable* 어노테이션..

Framework/spring 2017.08.30

[spring] lifecycle mechanisms

spring은 bean의 생명주기를 관리하는 3가지 방법이 있다. InitializingBean, DisposableBeaninit(), destroy()@PostConstruct, @PreDestroy 하나의 bean에 대해 여러 lifecycle이 구성되어 있을 경우, 아래와 같은 순서대로 실행이 된다. 초기화 순서@PostConstrct → InitializingBean에 정의된 afterPropertiesSet() 콜백 → 사용자 정의 init() 메서드 @PostConstrct @Sevice public class LifeCycleTest { @PostConstruct public void postConstruct() { System.out.println("postConstruct"); } } ..

Framework/spring 2017.08.29

[spring] cache

캐시는 미래의 데이터 요청에 빠르게 응답하기 위한 데이터 저장의 한 방법이다. (wikipedia) 캐시의 활용은 다양한데, 동일한 데이터를 계속해서 활용할 경우 계산 작업을 중복해서 하지 않도록 하거나 계산 시간이 오래 걸리는 작업을 미리 처리하고 추후 요청이 왔을 때 응답하도록 할 수 있다. spring에서는 cache 서비스를 추상화하며 여러 데이터 저장소를 활용할 수 있도록 구성하였다. org.springframework.cache.Cache 와 org.springframework.cache.CacheManager 인터페이스로 구체화된다. 해당 추상화에 대한 여러가지 구현들이 있는데 우리는 가장 기본이 되는 JDK의 java.util.concurrent.ConcurrentMap를 활용한 구현법을 ..

Framework/spring 2017.08.29

logback & logstash 패턴 설정

ELK의 기본 구조를 나타내는 그림이다.server의 로그를 server측 Filebeat와 데이터를 저장하는 elasticsearch 서버의 Logstash 연결을 통해 데이터를 기록한다. 출처 : https://assets.digitalocean.com/articles/elk/elk-infrastructure.png 여기서 한가지 의문점이 생기는데, 어떻게 정의한 로그들을 가져가는지 이다.어떻게 구조화단 로그 데이터를 elasticsearch에 맞춰서 넣을까? 우리는 일단 App Server가 spring의 logback을 사용한다고 가정하였다.logback의 xml 설정을 통해 기록되는 로그들을 일정한 패턴을 두고 쓰게 만들 수 있다.logback의 로그 발생 패턴과 logstach가 로그를 가져가..

Framework 2017.04.04

ELK (elasticsearch + logstach + kibana) 설치

1. Java8 설치 java 설치 파일 다운로드 cd /optsudo wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u121-b13/e9e7ea248e2c4826b92b3f075a80e441/jdk-8u121-linux-x64.tar.gz" 압축해제 및 심볼릭 링크sudo tar -xvf jdk-8u121-linux-x64.tar.gz 압축푼 폴더의 권한 변경sudo chown -R root: jdk1.8.0_121 /..

Framework 2017.04.04

스프링 팁: *Utils 클래스 활용

spring 블로그에 게시되어 있는 spring *Utils 클래스들에 대한 활용 팁이다. 블로그에 youtube 영상과 함께 자세히 설명하고 있다. Spring Tips: The Spring Framework *Utils Classes 크게 보면 아래 Utils들의 설명을 하고 있다.BeanUtils : JavaBean의 util 클래스로 bean의 초기화, property의 검사, property 복사 등의 함수 포함.ClassUtils : Class의 name, method 확인 및 reflection util을 포함. ReflectionUtils와 기능의 차이 비교가 필요하다.SystemPropertyUtils : system property의 값을 손쉽게 가지고 올 수 있는 utilFileCop..

Framework/spring 2017.04.03

rabbitmq 동접자 수 확인하기

진행하고 있는 프로젝트에서 이벤트가 발생할 때 마다 사용자들에게 메세지를 받게 해야하는 요구사항이 있었다.해당 요구사항을 처리하기 위해서 rabbitmq를 사용하게 되었다.클라이언트는 메세지를 받기 위해 계속 rabbitmq에 연결을 하고 있던 상태였는데, 비즈니스 관점에서 그럼 얼마나 많은 사람이 접근을 하고 있을지가 궁금해졌다. 같은 말로 서비스를 실제로 사용하고 있는 동접수치를 rabbitmq의 연결 수와 동일하게 판단할 수 있는 상황이었다. 요구사항에 맞춰 rabbitmq에 연결 카운트를 얻을 수 있는 기능을 살펴보니 rabbitmq-management plugin으로 처리할 수 있었다.해당 plugin은 연결 상태에 대한 정보를 dashboard 형태로 표현하는 웹 서비스와 함께 일부 api들을..

Framework 2017.02.18

[spring security] Controller에서 Principal 가져오기

일단 Principal의 개념을 알아보자. Spring Security의 공식 문서를 보면 What is Spring Security Principal은 시스템을 사용하려고 하는 사용자, 디바이스 혹은 시스템을 통칭한다. Request에 대한 로직을 처리하는 과정에서 인증된 사용자에 대한 정보는 계속 필요할 것이다. 가장 간단한 방법으로 Controller의 파라미터로 Principal을 설정해 받을 수 있다.public ModelAndView someRequestHandler(Principal principal) { User activeUser = (User) ((Authentication) principal).getPrincipal(); ... } 하지만, 위와 같이 처리를 하면 .getPrincip..

Framework/spring 2016.03.24
반응형