# MSA 학습 - MSA (Micro Service Architecture) - SOA (Service Oriented Architecture) - ESB (Enterprise Service Bus) ## Service Mesh : 마이크로 서비스간 직접통신을 하지 않기 위해서 > Netfilx (Hystrix(서킷 브레이커), Eureka(디스커버리), Turbine(통합 모니터링)) ### 서킷 브레이커 패턴 (마이크로 서비스간 장애 전파를 막기위해서) 요청 받는 쪽 서비스가 문제가 생겼을 경우 중간에 서킷 브레이커가 더이상 요청을 기다리지 않도록 하고 룰에따른 Fall-back 메세지를 보냄. #### 구현 방법 - 소프트웨어적 해결: (넷플릭스 Hystrix: Spring 라이브러리) 코드수정, 프로그램 언어 종속성의 단점 있음 - **인프라적 해결**: proxy server에서 처리함 (envoy.io, ngnix) ### 서비스 디스커버리 패턴 동적 주소 찾기 - Client side discovery: 서비스가 Service registry에 직접 물어봄 - Server side discovery: Load Balancer가 그 역할을 대신함 #### Service registry ZooKeeper, etcd / Eureka ### Sidecar 패턴 loging, security, platform, discovery, routing(proxy) 의 기능을 공통으로 분리 #### Istio 쿠버네티스 기반 서비스 메쉬, 개발언어 무관 - 부하분산 트래픽 관리: Envoy로 프록시, Pilot을 통해서 디스커버리, 로드밸런싱, 서킷브레이커 - 보안: TLS(Transport) - 모니터링: Heapster, Prometheus, StackDriver, Datadog, Grafana(각 서비스의 응답시간, 처리량), Jaeger(분산 트랜잭션 구간별 응답시간 모니터링)
바 식별자 규칙 첫 문자가 문자 나 ' _ ', ' $ '의 특수문자로 시작되어야 한다. 숫자로 시작할 수 없다. 첫 문자가 아니라면, 문자나 '_', '$'의 특수문자 그리고 숫자로 구성될 수 있다. 자바의 예약어는 식별자로 사용할 수 없다. 자바의 식별자는 대소문자를 구분 한다. 식별자 길이는 제한이 없고 공백은 포함할 수 없다 . 일반적 관례 클래스 이름은 대문자의 명사로 시작 메서드 이름은 소문자의 동사 변수는 소문자의 명사 상수는 대문자의 명사 올바른 예 클래스 이름 : ClassName 메서드 이름 : getValue, get_Value 변수 이름 : $value, variable_Value 상수 이름 : CONSTANT_VALUE 잘못된 예 user Name : 공백 포함 3dimension : 숫자로 시작 this : 자바 예약어 사용 #value : #포함 명칭 정하는 관례 구문적으로 꼭 지켜야 할 사항은 아니지만 관례적으로 적용해 주어야 하는 클래스, 메서드, 변수명 규칙이 존재 클래스 이름은 워드 단위로 첫 글자를 대문자로 정의 메서드 이름이나 변수명은 일반적으로 첫 글자를 소문자로 정의 변수 이름은 명사를 메서드 이름은 동사를 사용 변수가 final형이면서 기본형이면 명칭을 대문자로 final형이면서 참조형이면 명칭을 소문자로 정의 적절하게 정의된 명칭의 예 클래스명 : Example_8_1, Sample, Account, AccountManager, VisitServlet 메서드명 : printString, saveMoney, doExpr, calcurate, input 변수명 : number, name, TAX, total, sum, st_num, st_addr 예약어 기능이 이미 정해져 있는 키워드를 의미 자바 예약어는 모두 소문자로 약 50여 개로 이루어져 있음 자바의 예