카우치베이스 서버

ASP.NET 핵심 마이크로서비스: 시작하기

ASP.NET 핵심 마이크로서비스: 전체 애플리케이션/서비스 아키텍처의 단일 "수직" 조각을 담당하는 애플리케이션입니다.

왜 ASP.NET Core 마이크로서비스인가?

많은 의견 및 권장 사항 마이크로서비스가 무엇인지, 언제 마이크로서비스와 모놀리스를 사용해야 하는지 등에 대해 알아보세요.

이 글에서는 이러한 질문에 대해 자세히 다루지는 않겠습니다. 대신 다음과 같은 질문만 다루겠습니다. 날기 전에 걷기.

우리가 탐색하고 있다고 가정해 보겠습니다. 마이크로서비스 아키텍처를 사용하고 있으며, 특정 사용 사례에 대해 다국어 지속성을 활용하여 NoSQL 데이터베이스(Couchbase)를 사용하고자 합니다. 이 프로젝트에서는 다음과 같이 서비스별 데이터베이스 패턴을 사용하고, Docker(docker-compose)를 사용하여 ASP.NET 코어 마이크로서비스용 데이터베이스를 관리합니다. 개념 증명.

Couchbase와 같은 NoSQL 문서 데이터베이스는 끊임없이 확장되는 다양한 사용 사례 프로필 관리, 콘텐츠 관리, 개인화 등 다양한 기능을 제공합니다.

이 블로그 게시물에서는 Couchbase Server를 사용하지만, 여기서의 기본 사항을 마이크로서비스 아키텍처의 다른 데이터베이스에도 적용할 수 있습니다.

사용 중 ASP.NET Core 크로스 플랫폼 오픈 소스 프레임워크이기 때문입니다. 또한, Visual Studio (필수는 아니지만)는 Docker 및 도커-컴포즈. 하지만 여기서 설명한 기본 사항을 원하는 웹 프레임워크나 프로그래밍 언어에 적용할 수 있습니다.

1단계: 새 솔루션 만들기

이 블로그 게시물에서는 Visual Studio를 사용하지만, Visual Studio Code 또는 일반 명령줄에서도 동일한 효과를 얻을 수 있습니다(약간의 작업만 더하면).

새 ASP.NET Core 프로젝트를 만듭니다. 저는 HelloMicroservice(그리고 전체 소스 코드는 깃허브에서 확인할 수 있습니다. 를 참조하세요.

New project in Visual Studio

ASP.NET Core 마이크로서비스의 경우 Visual Studio에서도 이러한 결정을 내렸습니다:

  • 웹 애플리케이션 MVC(표시 목적으로 몇 가지 기본 HTML을 생성하지만 대신 API 프로젝트를 쉽게 사용할 수 있습니다)
  • ASP.NET Core 3(작성 시점의 최신 ASP.NET Core)
  • HTTPS 구성(반드시 필요한 것은 아니지만 좋은 아이디어)
  • Docker 지원 사용

Visual Studio new project wizard

이 시점에서 아주 기본적인 ASP.NET Core 프로젝트가 만들어졌을 것입니다. 다음으로 오케스트레이션과 데이터베이스를 추가하겠습니다.

2단계: 도커 컴포즈 지원 추가하기

마우스 오른쪽 버튼으로 프로젝트를 클릭하고 "추가"를 클릭한 다음 "컨테이너 오케스트레이터 지원"을 클릭합니다.

Add Container O

이 프로젝트의 유일한 목적은 ASP.NET 핵심 마이크로서비스의 개념 증명을 위한 개발을 시작하는 것임을 명심하세요. 로컬 머신 개발에는 Kubernetes보다 Docker-compose가 더 다루기 쉽습니다. 그렇기 때문에 결국에는 다음과 같이 하고 싶을 수도 있지만 "Docker Compose" 옵션을 선택합니다. 배포 를 쿠버네티스로 전환합니다.

Docker Compose

또한 나중에 배포할 예정이기 때문에 Linux를 선택했습니다.

이 단계를 완료하면 솔루션에 "docker-compose" 항목이 추가됩니다.

Docker Compose in Visual Studio

docker-compose.yml 파일을 살펴보면 다음과 같은 내용을 확인할 수 있습니다. 하나 서비스에 정의되어 있습니다: 헬로마이크로서비스. 또한 이제 Visual Studio 도구 모음에 "Docker 작성"이 표시됩니다.

Docker Compose button

이 시점에서 CTRL+F5를 눌러 실행할 수 있습니다. Visual Studio는 Docker Compose를 사용하여 프로젝트의 이미지를 생성하고 Docker 내에서 실행합니다. 브라우저가 자동으로 열리고 표준 "시작" 화면이 표시됩니다.

ASP.NET Welcome

진전이 있습니다. 다음으로 해야 할 일은 docker-compose로 데이터베이스를 실행하고 ASP.NET Core 애플리케이션이 데이터베이스와 통신하도록 하는 것입니다. 다음 단계가 완료되면 ASP.NET Core 마이크로서비스의 아주 기본적인 최소한의 셸을 갖게 됩니다.

3단계: 도커 컴포즈에 데이터베이스 오케스트레이션 추가하기

카우치베이스는 도커 허브에서 공식 컨테이너 이미지 제공. 이 이미지를 사용하려면 아래에 다른 서비스를 추가해 보겠습니다. 서비스: 를 docker-compose.yml 파일에 추가합니다:

필요한 기본 사항은 다음과 같습니다:

  • 카우치베이스: 이렇게 하면 "couchbase"라는 서비스 정의가 시작됩니다(원하는 경우 다른 이름을 지정할 수 있음).
  • 이미지: 카우치베이스:엔터프라이즈-6.0.3 이 서비스에 사용할 이미지입니다. 이와 같은 태그를 명시적으로 사용하는 것이 좋으며, 그렇지 않으면 원하는 이미지가 아닌 '최신' 이미지가 기본값으로 설정될 수 있습니다.
  • 포트: 노출할 포트 번호를 정의합니다. 외부 로 설정합니다. 8091만 노출하고 있는데, 이는 Couchbase UI 포트 번호이기 때문입니다(참조: 네트워크 및 방화벽 요구 사항)

그리고 볼륨: 가 반드시 필요한 것은 아닙니다. 그러나 볼륨을 사용하면 카우치베이스 이미지 실행이 중지되더라도 데이터 파일에 있는 /opt/couchbase/var 는 호스트 컴퓨터(내 컴퓨터의 파일 시스템)에 저장되며 다음에 이미지를 실행할 때 다시 마운트할 수 있습니다. 즉, 카우치베이스에 넣은 모든 데이터는 다음에 이미지를 실행할 때에도 그대로 유지됩니다.

CTRL+F5를 눌러 애플리케이션을 실행하면 Docker Compose가 다음을 포함한 오케스트레이션을 시작합니다. 둘 다 헬로마이크로서비스 그리고 카우치베이스 이미지. 이 두 이미지는 Docker 내부에서 나란히 실행된다는 점 외에는 서로 관련이 없습니다(아직). 명령줄을 열고 다음 명령을 실행하면 도커 PS를 입력하면 다음과 같은 내용이 표시됩니다:

(이 블로그 게시물의 너비에 관련 정보를 맞추기 위해 위의 텍스트를 많이 잘라냈습니다).

4단계: 구성 변경

주식을 사용했기 때문에 카우치베이스:엔터프라이즈-6.0.3 Docker 이미지를 사용하더라도 여전히 Couchbase UI(http://localhost:8091)를 열고 클러스터를 수동으로 설정해야 합니다. 자동화를 위한 몇 가지 옵션은 마지막에 나오는 '다음 단계'를 참조하세요.

Set up Couchbase Cluster

많은 이 과정을 안내하는 문서에 대한 설명이 있으므로 여기서는 반복하지 않겠습니다. 저는 '관리자' 및 '비밀번호' 자격 증명을 사용하고 있습니다. 또한 버킷 생성 호출 헬로마이크로서비스.

버킷을 생성한 후 다음 단계는 ASP.NET Core 애플리케이션이 데이터베이스와 통신하도록 하는 것입니다. docker-compose.yml을 열고, 데이터베이스의 헬로마이크로서비스: 로 정의합니다:

각 부분을 세분화해 보겠습니다:

  • 환경으로 이동합니다: 이렇게 하면 docker-compose가 환경 변수를 생성하도록 지시합니다.
  • 카우치베이스__서버__0 환경 변수의 이름입니다. 여기서 이름 지정이 중요합니다. 이 이름은 나중에 앱설정.json과 일치합니다.
  • http://couchbase:8091/ ASP.NET Core가 couchbase 서비스에 연결하는 데 필요한 URL입니다. 서비스 이름을 "couchbase"가 아닌 다른 이름으로 지정한 경우 여기에도 해당 이름을 사용하세요.
  • depends_on 이것이 도커 컴포즈가 서비스를 시작할 순서를 파악하는 방법입니다.
  • 명령 서비스가 시작되면 실행할 명령입니다.

이 예제에서는 다음을 사용하고 있습니다. wait-for-it.sh는 지정된 호스트/포트가 사용 가능해질 때까지 기다리는 스크립트입니다. 스톡 CouchBase Server Docker 이미지에서는 CouchBase Server가 실제로 시작되는 데 몇 초가 걸리므로 이 스크립트는 그 때까지 기다렸다가 진행합니다.

대기 중 사용 는 선택 사항입니다.를 사용할 수 있지만, 개발이 한창 진행 중이라면 이 방법을 사용하면 골칫거리를 줄일 수 있습니다. (참고로 저는 wait-for-it.sh를 샘플 GitHub 리포지토리).

마지막으로, ASP.NET Core 프로젝트가 Couchbase와 대화하도록 하기 위해 종속성 주입 확장 에서

구성은 기본적으로 appsettings.json에서 가져옵니다. 그러나의 환경 변수가 카우치베이스__서버__0 는 docker-compose.yml에 정의되어 있습니다. ASP.NET Core는 환경 변수를 검사하고 해당 값을 사용하여 앱 설정을 재정의합니다. 따라서 은 "서버"의 경우 appsettings.json(또는 appsettings.Development.json)에 있습니다:

그러나 사용자 이름/비밀번호는 여전히 앱 설정에서 읽습니다.

5단계: 데이터베이스 사용

마지막으로 ASP.NET Core 애플리케이션이 데이터베이스와 통신할 수 있는지 확인해 보겠습니다. 매우 간단한 삽입 그리고 Get홈컨트롤러 색인 메서드를 사용합니다:

뷰에 해당하는 몇 가지 변경 사항은 다음과 같습니다. Index.cshtml:

이제 ASP.NET 코어 마이크로서비스의 기본 사항이 준비되었습니다. 서비스를 실행하려면 Ctrl+F5를 누르세요. 브라우저가 열리면 다음과 같은 화면이 표시됩니다:

ASP.NET Core Microservices in action

대신 오류 메시지가 표시되는 경우 Couchbase Server를 올바르게 설정했는지, 올바른 이름의 버킷을 생성했는지, appsettings.json에서 올바른 로그인 자격 증명을 사용했는지, docker-compose.yml이 위의 예제와 일치하는지 확인하세요.

다음 단계

이제 ASP.NET Core 마이크로서비스를 개발할 수 있습니다. 개발자는 ASP.NET Core 애플리케이션의 Docker 이미지가 결과물이 됩니다. 조직에서 배포할 위치/방법에 따라 다음 단계는 크게 달라집니다.

이것은 시작에 불과하며, 더 살펴봐야 할 몇 가지 사항이 더 있습니다:

볼륨. Visual Studio를 완전히 닫습니다. 몇 초 후 Docker 이미지가 사라집니다( 도커 PS 를 다시 입력하여 확인합니다.) 이제 Visual Studio를 열고 CTRL+F5를 다시 누릅니다. 볼륨을 사용했으므로 Couchbase에 저장한 데이터가 여전히 남아 있을 것입니다. 이것이 개발을 위해 원하는 것이라면 좋은 상태입니다.

자동화. 데이터를 매번 지우고 다시 생성하는 것을 원한다면 사용자 지정 Docker 이미지를 만드는 방법을 살펴봐야 합니다. 또한 훌륭한 카우치베이스페이크잇 프로젝트를 사용하여 여러 도구, 변수, 스크립트 등이 포함된 Couchbase Server를 초기화하고 인덱스와 가짜 데이터로 채울 수 있습니다. 이에 대한 예는 브란트 버넷이 저와 공유한 요점.

Kubernetes. 카우치베이스 서버(또는 실제로 모든 데이터베이스)를 컨테이너에 배포할 계획이라면, Kubernetes와 쿠버네티스 오퍼레이터를 사용하면 Kubernetes 클러스터 내에서 데이터베이스를 훨씬 쉽게 관리할 수 있습니다. 많은 데이터베이스 벤더가 Kubernetes Operators를 만들었으며, Couchbase는 NoSQL 벤더 중 최초로 쿠버네티스 자율 운영자.

특별 감사

이 블로그 게시물은 Couchbase 커뮤니티의 엄청난 도움이 없었다면 불가능했을 것입니다.

덕분에 브랜트 버넷 회사의 마이크로서비스 개발 프로세스를 저와 공유해 주셔서 감사합니다.

이 과정을 함께 진행한 캘빈 앨런에게 감사드립니다. Twitch 라이브 코딩 스트림 그리고 기다림을 소개합니다..

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 매튜 그로브스

Matthew D. Groves는 코딩을 좋아하는 사람입니다. C#, jQuery, PHP 등 무엇이든 풀 리퀘스트를 제출할 정도로 코딩을 좋아합니다. 90년대에 부모님의 피자 가게를 위해 QuickBASIC POS 앱을 만든 이후로 전문적으로 코딩을 해왔습니다. 현재 Couchbase의 선임 제품 마케팅 관리자로 일하고 있습니다. 여가 시간에는 가족과 함께 축구 경기를 관람하고 개발자 커뮤니티에 참여하며 시간을 보냅니다. 그는 .NET의 AOP, .NET의 프로 마이크로서비스, Pluralsight 저자, Microsoft MVP의 저자이기도 합니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.