컨테이너, 마이크로서비스, NoSQL은 최신 애플리케이션을 구축하기 위한 멋진 3인방을 제공합니다. 이러한 애플리케이션은 민첩해야 하고, 끊임없이 진화하는 고객의 요구를 충족해야 하며, 널리 퍼져 있어야 하고, 모바일, 웹 및 IoT 플랫폼 전반에서 작동해야 합니다.

이 블로그에서는 다음을 사용하여 간단한 마이크로서비스 스택에 대해 설명합니다. 와일드플라이 군단, Docker카우치베이스. 이 블로그의 전체 코드와 지침은 에 문서화되어 있습니다: github.com/arun-gupta/wildfly-swarm-couchbase.

먼저 이 스택의 주요 구성 요소를 이해해 보겠습니다!

wildfly-swarm-logo와일드플라이 군단 를 사용하면 JavaEE 애플리케이션을 다음과 같은 서버 런타임에 필요한 만큼만 패키징하여 실행할 수 있습니다. java -jar 애플리케이션을 검색할 수 있습니다. 서비스 검색 기능이 내장되어 있습니다, 키클로크를 사용한 싱글 사인온, Hawkular를 사용한 모니터링등 다양한 기능을 갖춘 WildFly Swarm은 마이크로서비스를 개발하는 데 필요한 모든 구성 요소를 제공합니다.

docker-for-mac

Mac용 Docker 는 Mac OSX에서 Docker 컨테이너를 실행하기 위한 기본 지원을 제공합니다. 이는 다음을 기반으로 합니다. Hypervisor.framework 를 지원합니다. 도커 엔진은 알파인 리눅스 배포판에서 실행됩니다. xhyve 가상 머신을 관리할 수 있으며, 가상 머신도 Docker에서 관리합니다. Docker Machine이나 VirtualBox가 필요하지 않으며, OSX 보안 샌드박스 모델과 통합됩니다. DockerCon 2016에서는 Mac용 Docker의 비공개 베타 제한이 제거되어 이제 누구나 사용할 수 있습니다. Couchbase Logo

NoSQL 는 스키마가 없는 데이터베이스의 민첩성과 유연성을 제공합니다. 따라서 번거로운 데이터베이스 마이그레이션을 거치지 않고도 애플리케이션을 독립적으로 빠르게 발전시킬 수 있습니다. Couchbase는 다음을 통해 진정한 수평적 확장을 제공합니다. 동질적인 아키텍처확장 불가능한 마스터/슬레이브 아키텍처와는 대조적입니다. 또한 자동 샤딩을 제공합니다, JSON을 위한 SQL과 유사한 쿼리 언어 (N1QL), 모바일 데이터베이스 백엔드 서버와의 동기화 등 다양한 기능을 제공합니다. 이 블로그의 전체 샘플 애플리케이션은 여기에서 확인할 수 있습니다: github.com/arun-gupta/wildfly-swarm-couchbase.

WildFly 스웜 애플리케이션

Java EE REST 엔드포인트를 살펴보겠습니다:

표준 JAX-RS 어노테이션을 사용하여 POJO를 REST 엔드포인트로 변환합니다. 카우치베이스 자바 API 는 유창한 API를 제공하고 N1QL 문을 사용하여 문서를 쿼리하고 결과를 반환합니다. N1QL 문은 쿼리 결과에서 처음 10개의 요소를 반환합니다. 이 문서에서 N1QL 구문에 대해 자세히 알아보세요. 대화형 튜토리얼. 데이터베이스 추상화는 다음과 같이 정의됩니다:

이것은 열심히 초기화되는 싱글톤 EJB입니다. 이것은 카우치베이스 자바 SDK 를 클릭하여 Couchbase에 연결합니다. 데이터베이스 엔드포인트는 다음을 사용하여 지정할 수 있습니다. COUCHBASE_URI 환경 변수입니다. 다음은 pom.xml 와 와일드플라이 스웜을 구성하기 위한 카우치베이스 자바 클라이언트:

모든 종속성을 가져오기 위해 WildFly Swarm "자재 명세서"를 사용합니다. 빌드에 필요한 특정 종속성만 빌드에 필요한 종속성만 . 그런 다음 "뚱뚱한 항아리"에 패키징됩니다. 애플리케이션을 패키징하고 실행하는 데는 WildFly Swarm Maven 플러그인이 사용됩니다:

COUCHBASE_URI 는 카우치베이스 데이터베이스 서버가 실행되고 있는 호스트를 읽는 데 사용됩니다.

카우치베이스 서버 실행

Mac용 Docker를 사용하여 Couchbase 서버를 실행합니다:

그리고 아룽업타/카우치베이스 는 표준 카우치베이스 이미지 및 용도 Couchbase REST API 를 클릭해 서버를 구성합니다. 샘플 버킷이 JSON 문서로 채워질 때까지 몇 분 정도 기다립니다. 샘플 버킷에서 카우치베이스 CLI 도구 cbq 샘플 버킷에 기본 인덱스를 생성합니다:

출력은 다음과 같이 표시됩니다:

이 출력은 인덱스 생성 결과가 성공했음을 보여줍니다. Mac용 Docker를 실행할 때의 장점 중 하나는 모든 컨테이너를 다음 위치에서 액세스할 수 있다는 것입니다. localhost. 이는 다음을 의미합니다. 카우치베이스 웹 콘솔 에서 액세스할 수 있습니다. localhost:8091. couchbase-web-console-docker-mac-wildfly-swarm-microsoervice

이 화면에서는 Couchbase가 올바르게 구성되었는지 확인합니다.

WildFly 스웜 마이크로서비스 실행

독립형 마이크로서비스를 패키징하고 실행합니다:

Couchbase가 다른 호스트에서 실행 중인 경우 명령이 다음과 같이 변경됩니다:

출력은 다음과 같이 표시됩니다:

이제 애플리케이션에 다음 계정으로 액세스할 수 있습니다:

형식이 지정된 출력은 다음과 같습니다:

따라서 Docker 컨테이너로 실행되는 Couchbase 데이터베이스에 액세스하는 WildFly Swarm을 사용하여 간단한 마이크로서비스를 구축했습니다. 이제 이상적으로는 이 WildFly Swarm 서비스를 Docker 이미지로 패키징한 다음 해당 Docker 이미지가 서비스 역할을 하도록 해야 합니다. 이름이 도커 에 이미 추가되어 있습니다. pom.xml 하지만 이슈 #3 이 시나리오를 실패하게 만들고 있습니다.

마이크로서비스 참조

작성자

게시자 Arun Gupta, 개발자 지원 부문 부사장, Couchbase

아룬 굽타는 Couchbase의 개발자 지원 담당 부사장입니다. 그는 Sun, Oracle, Red Hat에서 10년 이상 개발자 커뮤니티를 구축하고 이끌었습니다. 그는 콘텐츠, 마케팅 캠페인 및 프로그램의 전략, 계획 및 실행을 개발 및 실행하는 교차 기능 팀을 이끄는 데 있어 깊은 전문성을 보유하고 있습니다. 그 전에는 Sun에서 엔지니어링 팀을 이끌었으며 Java EE 팀의 창립 멤버입니다. Gupta는 기술에 관한 블로그 게시물을 2,000개 이상 작성했습니다. 40여 개국에서 수많은 주제에 대해 광범위한 강연 경험을 가지고 있으며, 3년 연속 JavaOne Rock Star로 선정되었습니다. 또한 미국에서 Devoxx4Kids 지부를 설립하여 어린이를 대상으로 한 기술 교육을 지속적으로 장려하고 있습니다. 기술에 관한 여러 권의 책을 저술했으며, 열렬한 마라토너이자 지구를 횡단하는 사람, Java 챔피언, JUG 리더, NetBeans 드림팀 멤버, Docker 캡틴이기도 한 그는 @arungupta에서 쉽게 만나볼 수 있습니다.

댓글 남기기