본문 바로가기

spring boot yaml 파일에 쓰기! jackson-dataformat-yaml을 이용한 방법(snakeyaml? how to write to yaml file in spring boot) Spring boot에서 yaml 파일에 쓰기 Spring boot에서 보통 application.yml 파일이나 application.properties 파일에 설정값들을 적고 @ConfigurationProperties을 이용해서 Bean으로 등록해서 사용하는 게 일반적이다. 그래서 그런지 yaml 파일에 쓰는 것은 인터넷에 많이 안 나온다. 아래에서 아주 간단하게 써볼 예정이다. 필자가 yaml 파일에 쓰는 것을 생각하게된 이유는 서버 애플리케이션 운영 중에 설정 값을 변경하고 싶고, 서버 애플리케이션이 꺼졌다가 다시 실행되더라도 설정 값을 유지하고 싶었기 때문이다. 간단하게 데이터베이스에 설정 값을 저장하면 되지만...? 필자는 서버 애플리케이션을 개발하지만 DB를 내 마음대로 달 수가 없는 환경..
Springboot hystrix 사용기 (hystrix로 마이크로 서비스 간의 서비스 호출 실패를 방지해보자) Hystrix란? hystrix는 netflix에서 만든 라이브러리로 마이크로 서비스 아키텍처에서 분산된 서비스간 통신이 원활하지 않은 경우에 각 서비스가 장애 내성과 지연 내성을 갖게하도록 도와주는 라이브러리다. 결국 키워드는 통신 문제 극복이다. 라이브러리 적용 배경 기존의 모놀리틱 아키텍처에서는 A모듈의 A메서드에서 B모듈의 B메서드를 호출할 때, 이 메서드 호출에 실패하는 것은 아예 고려하지 않았다. 그럴 일이 없었기 때문이다. 그런데 마이크로 서비스 아키텍처에서는 다르다. 주문 서비스가 배송 서비스의 API를 호출했을 때 실패할 수 있다는 것이다. 위와 같은 상황에서 별다른 처리를 안했다면 배송 서비스에 문제가 있다는 이유로 주문 서비스도 어디선가 문제가 생기게 될 것이고, 주문 서비스를 호출하..
Deploy Springboot on heroku (히로쿠에 스프링부트 애플리케이션 배포하는 방법, 그대로 따라하면 5분만에 배포 가능!) 스프링부트 히로쿠에 배포하기 Spring cloud config를 공부하던 중에 Git의 webhook 기능을 써보고 싶었다. webhook 기능을 사용하려면 로컬 서버가 아닌 원격에 서버를 띄워야 한다(?)는 글을 보고 급하게 배포하는 방법을 찾아보고 정리하기로 했다. 무조건 원격이어야 하는지는 아직 확실하지 않지만 겸사겸사 배포를 한다. 예전에 개인프로젝트를 할 때는 AWS에 무료 인스턴스를 생성해서 했었다. 1년간 무료로 제공해주는 것을 사용했었는데 AWS에 등록한 카드 결제가 한번 이루어진 이후로 무서워서 heroku의 무료 서버를 이용해본다. 히로쿠 배포 가이드 따라하기 1. 히로쿠(heroku) 사이트에 가입을 한다. 오른쪽 상단에 sign up을 누르면 나오는 화면인데 특별한 것 없이 간단한..
HTTP Header 정리, 각 Http Header가 갖는 의미를 알아야 Http를 배운 것이다. HTTP Header 정리를 하는 이유 KOCW의 "컴퓨터 네트워크 - 한양대학교 이석복 교수님" 강의 중에 이런 표현이 있다."TCP를 이해하려면 TCP Header를 이해하면 된다.""UDP를 이해하려면 UDP Header를 이해하면 된다."실제로 토씨 하나 안 틀리고 위와 같이 말씀하신 것은 아니지만 비슷한 문장(맥락)이었다.결국, 어떤 프로토콜을 이해하려면 프로토콜의 헤더만 알면 된다는 얘기었다.왜 그럴까?특정 프로토콜의 헤더의 내용은 특정 프로토콜의 기능을 제공하기 위해 담고 있는 최소한의 정보기 때문이다.헤더에 그 프로토콜에 불필요한 내용을 담으면 네트워크로 전송되는 데이터의 크기가 커져서 빠른 전송이 불가능하기 때문에 프로토콜을 설계할 때부터 꼭 필요한 내용만 담아야 하고, 모든 기능이 표현..
RESTful에 대해서 설명해주세요.(REST, RESTful, RESTful API 개념 정리) REST가 뭐에요? RESTful에 대해서 설명해주세요. REST가 무엇인가?REST는 분산 시스템 설계를 위한 아키텍처 스타일이다.아키텍처 스타일이라는건 쉽게 말하면 제약 조건의 집합이라고 보면 된다.RESTful은 무엇인가?RESTful은 위의 제약 조건의 집합(아키텍처 스타일, 아키텍처 원칙)을 모두 만족하는 것을 의미한다.REST라는 아키텍처 스타일이 있는거고 RESTful API라는 말은 REST 아키텍처 원칙을 모두 만족하는 API라는 뜻이다.우리가 REST와 RESTful을 동일한 의미로 사용하곤 하는데 엄격하게는 다르다는 것을 알 수 있다.->이로써 REST와 RESTful, RESTful API가 무엇인지, 어떻게 다른지를 말할 수 있게 되었다.REST가 필요한 이유는 뭘까?1. 위에서 ..
스프링 애플리케이션이 시작, 종료될 때 수행할 메서드 지정하는 방법 + 스프링 빈(Bean)이 생성, 소멸될 때 수행할 메서드 지정하는 방법(graceful 종료, CommandLineRunner, ApplicationListener, InitializingBea.. 스프링 애플리케이션 시작과 끝 스프링(스프링부트)으로 애플리케이션을 개발했을 때, 애플리케이션이 시작할 때 어떤 동작을 하고 싶은 경우가 있고, 반대로 애플리케이션이 종료되기 직전에 어떤 동작을 하고 싶은 경우가 있다.예를들면 어떤 Configuration에서 값을 가져와서 초기 값을 설정한다든지, 애플리케이션이 종료되기 전에 하던 작업과 객체들을 우아하게(graceful) 종료한다든지 하는 작업들이다.더 쉽게 표현하면 애플리케이션 입장에서의 생성자와 소멸자가 필요할 때가 있다는 것이다.이 문제를 스프링에서는 인터페이스로 아주 쉽게 제공해준다.뿐만 아니라 Spring bean이 생성될 때와 삭제될 때 수행하는 메서드를 구현할 수 있게 인터페이스로 제공한다.아래에 코드를 보자!1234567891011121..
네트워크 공부하기 전 인터넷이 어떻게 생겨먹었는지 알아보는 네트워크 기초(5분만에 보는 최소한의 네트워크 구조) 인터넷과 네트워크 구성 이 포스트는 그냥 잘 만든 프레임워크에서, 잘 만든 라이브러리를 이용하여 개발하는 필자와 같은 사람이 네트워크에 아주 작은 관심을 갖게되어 개발에 약간이나 도움이 될만한 기초적인 내용을 정리한 포스트다.사실 명확하게 "개발에 도움이 된다!" 고 말할 수는 없겠지만 요즘 개발자들이 인프라도 만지고 그러니까, 그리고 인터넷/네트워크 통신 한다는 사람들이 이 정도의 기본은 알아야지 하는 마음으로 공부해봤다.그리고 그 내용을 정리한 것이 아래와 같다.인터넷 : 인터넷은 여러 작은 네트워크들을 묶은 것을 이야기한다. 우리가 LAN케이블로 PC에 연결해서 사용하는 네트워크 망 전체를 인터넷이라고 한다고 보면 된다.이더넷 : 이더넷은 다른 피씨와 통신하는 방법 중에 하나로 CSMA/CD라는 프..
자바 메서드 '잘' 작성하는 방법, 알면서 못 지키는 것들(이펙티브 자바 스터디 - 메서드) 어떻게 해야 메서드 잘 만들었다고 소문이 날까? 개발을 하면서 가장 많이 하는 일이면서 가장 난해한 것이 메서드 작성이 아닐까 싶다."하나의 메서드에서는 하나의 작업만 한다!" 라는 기본 원칙을 지키려고 하면서도 잘 안된다.사소하게는 private으로 할지 public으로 해야 할지등 정해야할 것들이 너무도 많은 것이 메서드다.역시나 한 번에 제대로 작성하려고하면 어렵다. 대신 유념하면서 고치고 또 고치면서 배우는게 코딩아닐까 싶다.회사를 다닌다면 코드 리뷰를 하는 이유도 올바른, 좋은 메서드를 개발하기 위함이 아닐까 한다.결국 좋은 메서드를 만드려면 기본 원칙을 잘 알고 시도하고 리팩토링을 거쳐봐야 한다. 그래서 아래에 기본 원칙을 소개하려고 한다.메서드 작성 기본 원칙 - 파라미터가 유효한지 검사하라..