본문 바로가기

spring-boot7

[MSA] Elastic Stack을 이용한 중앙 집중형 로깅_실제 운영 환경 안녕하세요. 오늘은 Elastic Stack을 이용한 중앙 집중형 로깅_1 포스팅에 이어서 각각의 elastic stack을 한번 이어보도록 하겠습니다. 개론 클라우드 환경에서 중앙 집중형 로깅을 만드는 것은 로컬환경에서 세팅하는 것과 많은 차이를 가지고 있습니다. 우리가 클라우드 상황임에 따라서 고려해야하는 상황이 좀 더 추가되는 것이지요. 고려해야하는 상황과 해결법은 아래와 같습니다. 서비스는 서버에 독립적이어야 한다. docker를 통한 해결 서비스는 상황에 따라 유연하게 Scale-out될 수 있어야한다. 새로운 서버에 새로운 서비스가 인스턴스로 올라왔다면 Log Shipper(로그를 중앙으로 전달하는 프로세스)또한 Scale-out 되어야 한다. Auto-Scaling 등을 이용한 해결 kube.. 2019. 12. 18.
[MSA] Spring Cloud Sleuth와 Zipkin을 이용한 분산 시스템 Tracing_2 안녕하세요. 오늘은 저번 포스팅에 이어서 Zipkin과 Sleuth를 연동하여 구현해보겠습니다. sleuth로 id를 주입하여 zipkin에서 취합여 보기좋게 트레이싱 하는 것 까지 입니다. 오늘 이 테스트를 진행하기 위해서는 2개의 프로젝트가 필요합니다. 그리고 오늘 프로젝트의 소스는 github에 올려두겠습니다. Zipkin과 Sleuth 연동 zipkin에서 데이터를 모으기 위한 시퀀스 다이어그램은 아래와 같습니다. 보시면 sleuth에서 trace에 대한 ID를 헤더에 기입하며, 타 시스템어 전송 후 돌아온 응답에 대해서 zipkin으로 비동기로 전송합니다. 이렇게 zipkin에 보내진 데이터는 취합되어 유저에게 보여주게 되는것입니다. 그렇다면 이제 본격적으로 구현해보도록 하겠습니다. Zipkin.. 2019. 12. 7.
[Spring & Design Pattern] Spring에서 발견한 Design Pattern_strategy pattern 안녕하세요. 오늘은 디자인패턴 중 꽃이라고 불리는 strategy pattern에 대해서 알아보도록 하겠습니다. strategy Pattern OOP(객체 지향)의 주요 원칙중 하나로 Open-Closed Principle(개방폐쇄원칙)이 있습니다. 간략히 말하면 "소프트웨어의 구성요소들은 확장에는 열려있어야하고, 변경에는 닫혀있어야 한다." 라는 원칙입니다. 즉, 요구사항의 변경이 있을 때 기존 구성요소의 수정은 최소화 하되 확장에는 적극적이어야 한다는 말입니다. 확장에는 기존 구성요소의 변경이 없습니다. 결합도가 낮다는 의미이기도 합니다. strategy Pattern은 개방폐쇄원칙에 잘 맞아 떨어지는 패턴입니다. 위의 이미지는 strategy 패턴을 보여주는 diagram입니다. 보면 클라이언트는 .. 2019. 10. 16.
[Spring & Design Pattern] Spring에서 발견한 디자인패턴_Singleton Pattern 안녕하세요. 오늘은 Spring에서 발견한 디자인 패턴의 3번째 시간으로 SingleTon 패턴에 대해서 알아보도록 하겠습니다. SingleTon Pattern이란? OOP에서 모든 객체들은 라이프 사이클(Life cycle)을 가지고 있습니다. 처음에 객체가 생성되고 GC에 의해서 삭제되기까지가 하나의 라이프 사이클입니다. 객체를 여러개를 만들지 않고 1개만 만들고 이를 공유해서 쓰고싶을 때가 있습니다. 이렇게 하면 객체 생성에 대한 비용 및 데이터 공유를 쉽게 할 수 있죠. 대표적인 예를 들면 DB의 Transaction을 관리하는 클래스가 그렇습니다. 이때 사용할 수 있는 pattern이 싱글톤 패턴(singleton pattern)입니다. Singleton Pattern이란 인스턴스를 1개로 제한.. 2019. 9. 23.
[Spring Boot] Spring Boot Actuator, Application을 모니터링 하자 안녕하세요! 연휴 잘보내고 계신가요? 저도 오랜만에 고향에 내려와서 연휴를 즐기고 있습니다. 시스템을 운영하다보면 시스템이 사용하고 있는 Thread, memory, Session 등의 요소에 대해서 모니터링은 필수적인 요소 입니다. 운영되는 시스템은 아무리 잘 만들어 졌다고 할지라도 버그가 있을 수 있습니다. 우리는 이런 상황을 대비하기 위해서 모니터링은 필요한 요소입니다. Spring Boot에서는 Spring Boot Actuator라는 자체모니터링 툴을 제공합니다. 오늘은 해당 모듈에 대해서 알아보도록 하겠습니다. Spring Actuator Spring Boot 공식 Reference에 나와있는 Actuator에대한 간략한 설명입니다. Spring Boot includes a number of .. 2019. 9. 14.
[Spring Boot] Session과 Cache의 기본 저장소 ! 개발기간이 길진 않지만 개발하며 정말 효울적으로 사용했던게 Session과 Cache 였습니다. 데이터를 임시 저장할 때 어떤 서비스를 이용하시나요 ? Database에 저장하려니 너무 개발 코스트가 많이 드는것 같고 파일로 저장하자니 또 꺼림직하고 합니다. 이때 사용할 수 있는것이 바로 휘발성으로 사용할 수 있는 Cache와 Session입니다. Spring에서도 해당 기능을 쉽게 구현 할 수 있도록 제공해주고 있는데요. 요즘은 이런 기능을 Redis를 이용하여 많이 쓴다고 합니다. 그런데 Spring은 별도의 벤더를 지정하지 않아도 기본적으로 내장되어있는 Session과 Cache가 있습니다. 오늘은 이것들에 대해서 알아보는 시간을 가져보겠습니다. Cache cache란? : 속도가 상대적으로 느린 .. 2019. 9. 10.
[java & ethereum] web3j를 통해 ethereum과 통신해보기 [ethereum]Ethereum 설치 및 실행 [ethereum]Smart Contract(Lottery 시스템) 제작 [ethereum]ethereum과 통신해보기 [ethereum]Smart Contract(Lottery 시스템)과 통신해보기 - basic [ethereum]Smart Contract(Lottery 시스템)과 통신해보기 - event & log [ethereum & java]web3j를 통해 ethereum과 통신해보기 [ethereum & java]Smart Contract(Lottery 시스템)과 web3j를 통해 통신해보기 - basic Smart Contract(Lottery 시스템)과 web3j를 통해 통신해보기 - event & log 저번시간까지 우리는 POST 통신을 .. 2019. 9. 2.