관리 메뉴

IT & Life

[해외] 튜토리얼 : 마이크로 서비스 응용 프로그램을 만드는 방법
 본문

프로그래밍

[해외] 튜토리얼 : 마이크로 서비스 응용 프로그램을 만드는 방법


미운앙마 2017. 12. 7. 01:21

https://www.infoworld.com/article/3200034/application-development/tutorial-how-to-build-microservices-apps.html

 

 

튜토리얼 : 마이크로 서비스 응용 프로그램을 만드는 방법


응용 프로그램을 작성하는 마이크로 서비스 접근법은 처음에는 이상하게 보일 수 있습니다. 그러나 오래된 모 놀리 식 동물에 대한 더 나은 대안으로 입증되었습니다.

 

 

이전에 마이크로 서비스 아키텍처를 사용한 적이 없다면 다른 사고 방식이 필요합니다. 많은 개발자가 데이터베이스 레이아웃으로 시작하여 응용 프로그램 디자인을 시작합니다. 그들은 복잡한 조인 테이블을 포함하여 전체 테이블을 만듭니다. 그런 다음 데이터베이스 상단에 응용 프로그램 논리를 작성합니다. 마지막으로, 사용자 경험을 응용 프로그램 논리에 추가합니다. 3 계층 케이크와 마찬가지로이 응용 프로그램 구축 방법은 처음에는 잘 작동 할 수 있습니다.

 

이 아키텍처의 문제점은 응용 프로그램에 기능이 추가되면 새 테이블과 조인 테이블이 데이터베이스에 추가된다는 것입니다. 그런 다음 새로운 기능이 기존 코드에 접목됩니다. 시간이지 나면서, 이것은 거대한 쥐의 둥지가됩니다.


마이크로 서비스 기반 응용 프로그램을 작성하는 가장 쉬운 방법은 프런트 엔드로 시작하여 뒤로 작업하는 것입니다. 전통 건축 연습을 그 머리에 맞 춥니다.


예제 microservices 응용 프로그램 빌드

 

이 거꾸로 된 접근법을 설명하기 위해 간단한 블로깅 응용 프로그램을 고려하십시오. 전통적으로 기사 테이블, 설명 테이블, 작성자 테이블 등을 사용하여 하나의 데이터베이스를 만들어 블로그 앱을 만들 수 있습니다. 기사에는 다양한 작성자가있을 수 있으므로 기사 및 작성자를위한 조인 테이블을 만들 수 있습니다.

 

microservices를 사용하면 블로그의 홈페이지를 가져 와서 요소를 고려하여 시작할 수 있습니다. 댓글은 블로그의 홈페이지에 없으므로이 시점에서 댓글을 정의 할 필요가 없습니다. 아직 코멘트 데이터베이스를 만들 필요가 없습니다. 그것은 나중에 일어날 수 있습니다.

먼저 Article이라는 자체 포함 된 REST API 마이크로 서비스를 만들 수 있습니다. 프론트 엔드 모형은 Backbone, Angular 또는 Ember 와 같은 JavaScript 클라이언트를 통합하여 기능 코드가 될 수 있습니다. 이 자바 스크립트 클라이언트 세 개 모두는 기본적으로 모든 REST API와 함께 작동하며 이전에 단순한 모형이었던 디자인으로 데이터를 가져올 수 있습니다.

 

Article REST API 마이크로 서비스는 기사 데이터를 저장하고 검색하는 핵심 기능에 중점을 둔 경량 애플리케이션입니다. 마이크로 서비스 애플리케이션 개발의이 단계에서는 인증 또는 보안 모델에 대해 걱정할 필요가 없습니다. 추가 마이크로 서비스는 나중에 계층화 할 수 있습니다.

 

필요한 것보다 더 많은 기능을 가진 마이크로 서비스에 부담을주지 마십시오. 따라서 "마이크로 서비스"의 "마이크로".

 

이 단계에서는 각 마이크로 서비스의 기능 범위가 제한되어 있기 때문에 데이터 저장 옵션에 대한 유연성이 향상됩니다. 크고 복잡한 데이터베이스 설계가 없으면 관계형 데이터베이스의 관련성이 떨어지며 MongoDB , Couchbase , Cassandra, Redis 및 Riak과 같은 NoSQL 데이터베이스 가 더 잘 작동 될 수 있습니다. 이론적으로, 각 마이크로 서비스는 해당 마이크로 서비스에 가장 적합한 다른 기본 데이터 저장 메커니즘을 사용할 수 있습니다.

 

Article REST API를 작성하고 프런트 엔드 클라이언트에 동적 데이터를 제공하면 주석을 처리 할 수 ​​있습니다. 댓글 작성에 고유 한 스팸 필터 및 신원 기술을 통합하는 새로운 자체 포함 코멘트 REST API 마이크로 서비스를 구축 할 수 있습니다. 코멘트 마이크로 서비스는 모든 멋진 코멘트 코드를 완벽하게 캡슐화합니다. 이제 프런트 엔드 클라이언트는 필요에 따라이 새 API에서 동적 데이터를 가져올 수 있습니다.

 

마지막으로, 새로운 기사 작성을위한 인증 및 권한을 처리하는 작성자 마이크로 서비스 작성에 대해 생각할 수 있습니다. 작성자 서비스에는 아마도 제어판 전면 프런트 엔드가있을 것입니다. 블로그 작성자가 로그인하여 새 블로그 게시물을 작성할 수 있습니다. 그런 다음 Author 마이크로 서비스를 프런트 엔드 클라이언트와 Article Microservice에 통합 할 수 있습니다. 기사 마이크로 서비스는 작성자가 새로운 블로그 게시물을 작성할 수있는 권한을 갖도록 기사 작성 프로세스 중에 작성자 마이크로 서비스에 API 호출을 할 수 있습니다.

 

과거에는 관계형 데이터베이스의 조인 테이블을 통해 권한 검사가 수행되었을 수있었습니다. 가벼운 interservice API 호출은 때때로 조인 테이블을 대체 할 수 있습니다.

 

프론트 엔드 마이크로 서비스 애플리케이션은 이제 3 개의 개별 마이크로 서비스로부터 끌어 당겨 지는데, 그 중 2 개는 서로 통신한다. 이 응용 프로그램의 모든 것이 분산되어 있습니다. 하나의 큰 관계형 데이터베이스 대신에, 각 마이크로 서비스는 자체 데이터베이스를 가지고 있습니다. 각 마이크로 서비스는 독립적으로 확장 할 수 있습니다. Article microservice에 대해 수십 개의 응용 프로그램 서버가있는로드 균형 조정기를 설정할 수 있지만로드 균형 조정기가없는 작성자 마이크로 서비스의 인스턴스는 하나만 있으면됩니다.

 

마이크로 서비스 응용 프로그램 구축시 프로그래밍 문제

 

개발자와 관리자가 마이크로 서비스를 제공함에 따라 똑같은 질문이 반복해서 발생합니다. 다음은 가장 일반적인 쿼리에 대한 답변입니다.

 

마이크로 서비스에서 서로 다른 데이터베이스간에 데이터를 어떻게 연결합니까?

 

마이크로 서비스를 구축 할 때 사람들이 가지고있는 첫 번째 관심사는 조인 테이블을 없애는 것입니다. 이 기사의 간단한 블로그 예제보다 복잡한 애플리케이션을 작성하기 시작하면이 문제가 매우 분명해진다.

 

간단한 솔루션은 데이터베이스 수준 조인 대신 응용 프로그램 수준 조인을 사용하는 것입니다. 응용 프로그램 수준 조인을 사용하면 단일 SQL 명령보다 많은 데이터베이스 쿼리가 발생하지만 마이크로 서비스 계층에 캐싱을 통합하여 완화 할 수 있습니다. 결국, 각 마이크로 서비스는 자체 캐싱 기술을 가질 수 있습니다. 장거리로이 접근법은 단순한 데이터베이스 조인보다 덜 우아 할 수도 있지만 확실히 확장 성이 뛰어납니다.

 

보다 정교한 솔루션은 이벤트 중심의 pub-sub 메시지 버스를 마이크로 서비스 아키텍처에 통합하는 것입니다. 메시지 버스를 사용하면 다양한 마이크로 서비스가 응용 프로그램 전체에서 발생하는 이벤트와 통신 할 수 있습니다. 이 아키텍처는 더 이상 복잡하지 않은 마이크로 서비스 기반 애플리케이션을 구축하기위한 기반입니다. 서비스 API를 100 % 즉시 사용할 수 있기 때문에 더 이상 필요하지 않기 때문입니다.

 

마이크로 서비스를 어떻게 조정합니까?

 

하나의 커다란 모 놀리 식 응용 프로그램 대신 수십 또는 수백 개의 작은 마이크로 서비스를 실행하는 데 드는 운영 오버 헤드가 엄청나게 보일 수 있습니다. 의문의 여지없이 모든 종속성을 추적하면 복잡성이 추가됩니다. 다행히도 이러한 문제에 대한 새로운 통합 솔루션은 매일 안정되고 안정적으로 변하고 있습니다.

 

당신이보고있는 여부 는 Kubernetes , 메소 , 떼, 또는 유목민이 오케스트레이션 도구는 모두 기본적으로 같은 일을 : 그들은 선언적 건축가 당신의 개발 운영 플랫폼을 수 있습니다.

 

전통적인 devops 도구 는 개별 응용 프로그램을 시작, 관리 및 모니터링하는 데 적합하지만 devops 도구와 오케스트레이션 서비스의 차이점은 실행중인 서비스 간의 종속성으로 복잡한 마이크로 서비스 환경을 관리하기 위해 오케스트레이션 서비스가 구축된다는 것입니다.

 

이 모든 오케스트레이션 도구는 작업 기반의 메시지 버스 일뿐입니다. 아키텍처에서 이미 메시지 버스를 사용하고 있다면 기존 메시지 버스 위에 오케스트레이션 엔진을 구축 할 수 있습니다.

 

기존 애플리케이션을 마이크로 서비스로 어떻게 분해합니까?

 

마이크로 서비스 아키텍처를 처음부터 다시 사용하여 응용 프로그램을 다시 구축 할 수는 없습니다. 큰 일은 당신이 할 필요가 없다는 것입니다.

중요한 레거시 애플리케이션에 앉아 있고 마이크로 서비스로 나누기를 원하지만 천천히 진행하려는 경우 가짜 마이크로 서비스 를 구축하여 시작할 수 있습니다 .

 

가짜 마이크로 서비스는 데이터 저장소가 아직 응용 프로그램의 다른 부분과 격리되어 있지 않다는 점을 제외하면 일반 마이크로 서비스와 같습니다. 예를 들어 복잡한 사용자 정의 블로깅 응용 프로그램을 사용하는 경우 Article Rser API 만 수행하는 별도의 응용 프로그램 인 가짜 Article 마이크로 서비스를 만들 수 있습니다. 그러나 기본 기사 데이터베이스는 여전히 동일한 큰 관계형 데이터베이스 모델에 있습니다. 그렇게하면 데이터가 중복되지 않습니다.

 

결국, 가짜 마이크로 서비스가 충분히 만들어지면 데이터 저장소를 별도의 사일로로 세분화 할 수 있습니다.

 

마이크로 서비스의 백그라운드 프로세스는 어떻습니까?

 

대형 데이터 분석 의 등장으로 장기 실행 백그라운드 프로세스가 점점 더 보편화되고 있습니다 . 다행히 마이크로 서비스는 이런 종류의 문제에 매우 적합합니다.

 

애플리케이션 아키텍처에 pub-sub 메시지 버스를 이미 통합했다면 백그라운드 프로세스는 포트 바인딩이 필요없는 또 다른 마이크로 서비스 일뿐입니다. 메시지 버스에 가입하여 자신을 첨부 한 다음 이벤트가 트리거 될 때까지 대기 할 수 있습니다.

 

마이크로 서비스 응용 프로그램에서 타사 서비스를 사용할 수 있습니까?

 

마이크로 서비스 뒤의 분산되고 느슨한 커플 링 철학은 제 3 자 서비스를 사용하는 데 적합합니다. 예를 들어, 자신의 설명 마이크로 서비스를 구축하는 대신 Disqus를 사용할 수 있습니다. 자체 인증 마이크로 서비스를 만드는 대신 Janrain을 사용할 수 있습니다.

 

거인의 어깨에 서십시오.

 

응용 프로그램을 작성하는 마이크로 서비스 접근법은 처음에는 이상하게 보일 수 있습니다. 그러나 마이크로 서비스 아키텍처는 오래된 모 놀리 식 동물에 대한 실용적인 대안으로 입증되었습니다. 이 길로 내려 가기로 결심하면 자이언츠의 어깨에 서게됩니다.

Comments