본문 바로가기

Happyer16

(314)
Eureka self preservation mode란 Eureka self preservation mode란Eureka는 AP만을 채택하고 있다. (http://happyer16.tistory.com/admin/entry/post/?id=168&type=post&returnURL=/manage/posts/). Inconsistency (불일치)를 최소화하기 위해 Self preservation mode란 것이 있다.
Docker tag 잘 활용하기 Tip #1. Docker Tag를 명시적으로 관리하기 ( latest x )Docker Image 태그는 기본적으로 latest이기 때문에 따로 명시해줄 필요가 없어 편해보일 것이다. 이렇게 버전을 명시해주지 않으면, 변화를 추적하기 힘들고 Production 환경에서 무엇을 실행하였는지 판단하기 어렵다. Docker wiki에도 latest에 의존하지 않고 의미있는 tag를 사용하라고 되어 있다.Latest가 안정화된 latest 인지 개발중인 latest인지 판단할 수 없음 Latest가 항상 최신 버전임을 보장해주지 않음 Tip #2. Docker Tag 이름 잘 짓기 일단 dev, staging, prod 환경과 상관없이 하나의 docker repo를 가진다. env마다 repo를 하나씩 가진다..
Eureka에 대해 알아보자. Microservice를 구축하면서 Service discovery는 필수이다. Netflix에서 제공해주는 Eureka에 대해 알아보자. 해당 글은 Netflix에서 제공해주는 Eureka wiki를 바탕으로 작성하였다. 1. Eureka 개요 ( http://happyer16.tistory.com/168?category=737745 )2. Eureka 2.0 아키텍처3. Eureka 2.0 클라이언트 설정하기4. Eureka 2.0 서버 설정하기5. Eureka 서버 EC2에 배포하기6. Eureka Server self preservation mode
Eureka Server란 Eureka Server란?Eureka는 Middle-tier server( 비즈니스 로직이 위치한 애플리케이션 서버단)의 로드밸런스와 Failover를 위해 서비스를 배치해주는 REST 기반 서비스이다. 이 서비스는 주로 AWS Cloud에서 사용되고, 이를 Eureka Server라 부른다. Eureka Client Java 기반 클라이언트 요소도 있는데, 서버와 상호작용을 더 쉽게 해주는 것을 Eureka Client라 부른다. 클라이언트도 Round-Robin 방식을 기본으로 사용하는 로드밸런스를 내장하고 있다. Netflix에서는, Eureka에서 기본 로드 밸런스 외에도 트래픽, 리소스 사용량, 에러 상황 요소에 따라 로드밸런스를 할 수 있도록 제공해주고 있다. Eureka Server의 필요..
스프링 클라우드 - 마이크로서비스간 통신이란 (Ribbon) 스프링 클라우드 마이크로서비스간 통신에 대해 알아보자지난 포스팅에서 서비스 발견(Service discovery)와 설정 서버(configuration Server)에 대해 알아보았다. 하지만, 이 두 설정은 단지 어플리케이션을 독립적이고 standalone하게 관리 할 수 있도록 도와주는 역할이다. 이제 내부 서비스간의 통신을 위해 HTTP 클라이언트와 클라이언트 사이드 로드밸런서를 살펴보아야 한다. 스프링 클라우드 마이크로서비스 통신에서 다루는 내용서비스 발견을 사용하는 경우와 사용하지 않는 경우에 RestTemplate 사용해보기Ribbon Client 커스터마이징Feign Client에 대한 특징 ( 리본 클라이언트, 서비스 발견, 존 등과 통합 )스프링 클라우드 마이크로서비스 통신 다양한 스타일..
Spring Cloud Overview + 적용기 스프링 클라우드를 적용하기 전에 느낀점 이번 달에 Spring Boot를 기반으로 Microservice 개발 Sprint가 끝났다. 기능 개발이 완료되고, 우리는 Spring Cloud를 적용하기러 하였다. 개발은 보통 필요에 의해 시작이 된다. 하지만, 아직 현재 작은 단위의 서비스와 작은 유저 수를 보유하고 있기 때문에 관리 차원에서도 불편함을 겪지 않고 있어 Spring Cloud가 왜 필요한지 모르겠다. ( 필자의 무지도 포함하여 ) 스프링 클라우드가 뭘 도와주는데? 이름만 살펴보면 클라우드에 기반한 개발 스타일 적용을 쉽게할 수 있도록 해준다. 그렇다면, 클라우드에 기반한 개발 스타일이 무엇일까?확장성(scable)을 가지고, 클라우드 플랫폼에 쉽게 배포할 수 있으며, 지속적인 배포가 가능하도..
Clean Code - 10장. 클래스 클래스 이름은 클래스의 책임을 기술해야 한다. 만약, 클래스 이름을 짓기가 애매하다면 내가 클래스에 너무나도 많은 기능을 넣고 있다는 것이다. EX : Manager, Processor등과 같이 모호한 단어가 좋지 않은 예이다. 클래스 메서드가 클래스 인스턴스 변수를 더 많이 사용하도록 짜라. 단지, 인스턴스 변수가 많아야 한다는 소리가 아니다. 모든 인스턴스 변수를 각 클래스 메소드마다 쓰면 좋다. => 결국 이게 응집도가 높다는 말이다. 응집도를 높이려면 어떻게 해야할까?변수가 아주 많은 큰함수를 찾아보자. 큰함수를 작은함수 단위로 쪼개보자. 그러다보면, 빼내려는 작은함수에서 변수 넷을 사용해야 한다. 인수만 많아지고 더러워지자나... 인수 X, 클래스 인스턴스 변수 O 여기까지만 보면 응집도가 낮아..
JPA 3장. 영속성 관리 ( persistence ) JPA에서 제공해주는 기능은 크게 2가지이다.@Entity와 Table을 매핑하는 설계 부분매핑한 @Entity를 실제로 사용하는 부분 ( CRUD ) Spring Boot 프로젝트를 할 때 @Entity 어노테이션을 명시만 해봤는데, 이번 포스팅에서 EntityManager가 매핑한 Entity를 어떻게 사용하는지 살펴보자. Entity Manager와 Entity Manager FactoryEntity Manager Factory데이터베이스를 하나만 사용하는 애플리케이션에서는 하나의 Entity Manager Factory를 생성한다. 설정 정보는 META-INF/persistence.xml에서 읽어 온다.EntityManagerFactory emf = Persistence.createEntityMa..
Spring Boot 2.0 - 스프링 부트 기본 로깅 LoggingSpring boot의 소스는 기본으로 Commons Logging을 사용한다. 그리고 우리가 개발한 스프링 프로젝트는 기본으로 Logback을 사용한다. 다른 로깅툴을 사용해도 slf4j api로 라우팅 해주는 것이 포함되어 있어 다른 로킹 툴을 사용할 수 있다. 즉, logging dependency를 신경쓰지 않아도 된다. Log Format2014-03-05 10:57:51.112 INFO 45469 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/7.0.52 2014-03-05 10:57:51.253 INFO 45469 --- [ost-startStop-1] o.a...
AWS DynamoDB - (3) AWS SDK for Java 설정하기 OverviewAWS SDK for Java는 Amazon Web Service를 위한 JAVA APi이다. 즉, Amazon S3, Amazon DyanmoDB의 서비스를 사용하는 Java application을 만들 때 사용하게 된다. 이번 포스팅의 목표는 EC2 Instance에서 실행하는 Spring Boot project가 DyanmoDB service를 사용할 수 있도록 AWS SDK를 설정하는 것이다. 아래의 그림은 해당 설정이 끝났을 때 요약도이다. 1. AWS SDK for JAVA 설치하기build.gradle에 dependency를 추가해주자.// AWS Dynamic DB compile group: 'com.amazonaws', name: 'aws-java-sdk-dynamodb',..