본문 바로가기

반응형

MicroService

9.마이크로서비스, 비동기 통신이란? 비동기 마이크로서비스 동기 마이크로서비스 란? 특정 마이크로서비스가 다른 마이크로서비스에 요청을 보내면, 요청이 처리돼 해당 요청에 대한 결과를 얻을 때까지 기다린다면 동기라함. 비동기 마이크로서비스 란? 특정 마이크로서비스는 A 요청을 처리하는 동안 다른 마이크로서비스에 요청하지 않거나 B 요청을 처리하는 동안 다른 마이크로서비스에 요청을 보내지만 결과를 기다리지 않으면 비동기라고 함. 경우의 수 1.특정 마이크로서비스는 요청을 처리하는 동안 다른 마이크로서비스와 전혀 통신 안함. 즉, 다른 시점에 다른 시스템과 통신함. 2.특정 마이크로서비스가 다른 마이크로서비스로 요청을 보냇지만, 응답을 기다리지 않음. 통신 프로토콜 동기 동기통신의 경우 요청받는 서버는 각 요청에 응답해야 함. ex) REST, .. 더보기
8.마이크로서비스, ESI란 무엇일까? ESI(Edge Side Includes) ESI는 HTTP 클라이언트에서 리소스를 통합할 수 있는 수단을 제공하는 XML 기반 마크업 언어임. ESI를 사용하면 웹 애플리케이션이 다른 웹 애플리케이션의 HTML 일부를 통합할 수 있음. 이를 위해 웹 애플리케이션은 ESI 태그를 포함한 HTML을 전송함. ESI 구현체는 ESI 태그를 분석, 다른 웹 애플리케이션의 HTML일부분을 올바른 위치에 두고 통합함. 참고페이지 : https://www.w3.org/TR/esi-lang ESI 구문 예시 ESI의 구현체란? 웹 사이트는 해당 캐싱을 사용해 들어오는 요청을 바탕으로 캐싱해서 웹 페이지를 전달함. 웹 캐싱 서버를 ESI 구현체로 사용할 수 있음. 웹 애플리케이션은 캐싱 실패에 대한 요청을 처리하면 됨.. 더보기
7.마이크로서비스, 자원지향클라이언트 아키텍처란 무엇일까? 자원 지향 클라이언트 아키텍처(ROCA, Resource-Oriented Client Architecture) 웹 애플리케이션을 구현하는 방법, HTML과 같은 확립된 기술에 중점을 두고, 프론트엔드 모듈화와 통합에 많은 장점을 제공하는 아키텍처 ROCA 원칙 서버는 REST 원칙을 준수함. 모든 자원에는 모호하지 않은 URL이 있음. HTTP 메소드가 올바르게 사용됨. ex) GET 메소드는 데이터를 변경하지 않음. URL로 식별되는 자원은 JSON or XML과 같은 HTML외에 다른 표현 방식을 가질 수 있음. 모든 로직은 서버에 있음. 따라서, 클라이언트의 자바스크립트는 사용자 인터페이스를 최적화하는 역할만 수행함. 로직이 한 위치에서 구현되기 때문에 로직을 쉽게 변경할 수 있음. 즉 많은 클라이.. 더보기
6.마이크로서비스, 독립시스템(SCS, self-contained system) 은 무엇일까? 독립시스템(SCS, self-contained system) 이란? 매크로 아키텍처의 컴포넌트를 명세하는 마이크로서비스의 타입 중 하나. SCS는 완전한 매크로 아키텍처를 의미하지는 않음. 일부 도메인 로직의 구현에 필요한 모든 정보를 정확히 제공하는 여러 마이크로서비스를 제공, 따라서 독립시스템을 제공하는 것. 로직, 데이터, UI를 포함함. 변경을 더 쉽게 수행가능, 상용환경에 배포할 수 있음. SCS의 정의 참조 페이지 : http://scs-architecture.org 해당 웹사이트 내용은 아래 github 에서 소스코드로 제공되며, 누구나 변경 할 수 있음(웹사이트 콘텐츠, 크리에이티브 커먼즈 라이선스(Creative Commons License)) 참조 : https://github.com/.. 더보기
5. 마이크로서비스, 왜 가벼울까? 마이크로서비스가 가벼운 이유 마이크로서비스가 제대로 설계되면, 하나의 비즈니스 범위에 맞춰 만들어지므로 하나의 기능만 수행함. 결과 대부분의 마이크로서비스 구현체에서 볼 수 있는 공통적인 특징 중 하나는 마이크로 서비스가 작은 공간만을 차지한다는 점. 마이크로서비스를 지원하는 기술을 선택할 때 확인사항 관리할 수 있는 수준 내에서 마이크로서비스가 전체적으로 차지하는 공간을 통제할 수 있을 만큼 그 기술이 가벼운지 꼭 확인 필요. ex) 웹컨테이너 제티(Jetty) / 톰캣(Tomcat)은 마이크로서비스에 사용될 애플리케이션 컨테이너로서 웹로직(WebLogic) / 웹스피어(WebSphere) 처럼 복잡하고 무거운 전통적인 애플리케이션 서버에 비해 더 적합함. ex) 컨테이너 기술 도커가 VMWare / .. 더보기
4.마이크로서비스, 실제적인 서비스란 무엇인가? 마이크로서비스에서의 서비스 마이크로 서비스는 서비스 종단점을 API의 형태로 외부에 노출하고 실질적인 세부사항은 모두 추상화함. 즉, 내부의 구현로직, 아키텍처와 프로그래밍 언어, 데이터베이스 품질 유지 체계등등 기술적인 사항들은 서비스 API 에 가려짐. 마이크로서비스 아키텍처의 개발 조직 애플리케이션 개발보다는 서비스 개발에 더 중점을 둠. 서비스의 특징 서비스 계약 SOA와 비슷하게 마이크로서비스도 분명하게 정의된 서비스 계약에 의해 작성됨. 서비스 케뮤니케이션 방식 JSON / REST JSON/ REST 관련 서비스 계약 정의 기법 JSON 스키마, WADL, Swagger, RAML 등등. 느슨한 결합 독립적이고 서로 느슨하게 연결되어 있음. 마이크로서비스는 이벤트로 입력을 받고, 이벤트로 응.. 더보기
3.마이크로서비스, 마이크로(micro) 아키텍처와 매크로(macro) 아키텍처로 나눠야 하는 이유? 마이크로서비스는 더 나은 낮은 결합도를 제공함. 따라서 마이크로서비스는 소프트웨어 모듈을 모듈화하고 격리할 수 있음. but, 마이크로서비스는 큰 시스템 관점에서 보면 모듈. 따라서 , 모듈은 통합될 수 있어야함. 통합은 마이크로서비스 아키텍처의 도전 과제임. 마이크로 서비스 아키텍처를 마이크로(micro) 아키텍처와 매크로(macro) 아키텍처로 나눠야 하는 이유? 마이크로 서비스가 전체 시스템을 구성할 때 함께 동작할 수 있도록 보장해야 함. 반면, 마이크로서비스의 자유가 마이크로서비스 아키텍처의 대부분의 장점에 필요한 격리와 독립성을 구성하기 때문에 제한이 심하지 않음. 이런 이유로, 마이크로 서비스 아키텍처를 마이크로(micro) 아키텍처와 매크로(macro) 아키텍처로 나누는 것이 종음. 마이크.. 더보기
2.마이크로서비스, 리액티브란 무엇일까요? 리액티브프로그래밍 마이크로서비스를 구현하는 한 가지 방법. 리액티브 정리 반응성(Responsive) : 시스템이 최대한 빨리 응답함을 의미함. 복원력(Resilience) : 일부분이 문제가 발생하더라도 시스템을 사용할 수 있음. 탄력성(Elastic) : 시스템은 추가 자원을 사용해 다양한 레벨의 부하를 처리할 수 있음. 로드가 피크가 된 후 자원이 다시 해제됨. 메시지 기반(Message Driven) : 시스템에서 비동기 통신(메시지기반)을 사용함. 서버 애플리케이션 비교 기존 vs 리액티브 기존 일반적으로 들어오는 요청을 특정 스레드에서 처리함. 해당 요청이 데이터베이스에 요청해야 한다면 요청 결과가 도착할 때까지 스레드는 블로킹됨. 각 네트워크 연결에 대해 병렬로 처리되는 각 요청에 대해 스레.. 더보기

반응형