Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
53
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

@reireias

KubernetesとNode.jsでマイクロサービスを作成する 1/6 概要

Node.jsとKubernetesを使い、マイクロサービスを作ってみたくなったので、このチュートリアルを作成してみました。
バグや修正した方がよい点などあれば気軽にコメントをおねがいします。

本チュートリアルは以下の8章構成になっています。

第1章 概要

この章では本チュートリアルの概要について記載します。

目的

本チュートリアルは以下の目的で作成されています。

  • Kubernetesを使い、実際にMicroserviceを構築することで、Kubernetesへの理解を深める
  • 複数チームによる開発を考慮し、リポジトリや検証環境を構築する
  • AWSのEKSとGCPのGKEを利用することで、PaaSでのKubernetes利用の知見を獲得する

作成するMicroserviceの概要

本チュートリアルではKubernetesとNode.jsを使い、TwitterライクなMicroserviceを構築します。

実装する機能としては下記になります。

  • ログイン/ログアウト機能(GitHub認証)
  • ツイート機能
  • フォロー/アンフォロー機能
  • タイムライン機能(自分 + フォローしているユーザーのツイート一覧)

構築するMicroserviceの概要図は下記のようになります。

BFF(Backend for Frontend)を採用し、Webサービスのサーバーサイドが各サービスとデータをやり取りする構成としています。

microservice-tutorial01.png

なお、Node.jsを採用した理由は下記のとおりです。

  • ミドルウェアなしに単一のプロセスで起動できること
    • Cloud Nativeなアプリケーションを作成する上で重要です
  • なるべくメジャーな言語であること
  • チュートリアル読者の実装ハードルを下げるため、各サービスとも共通した言語にしたい

各サービスについて

以下では、本チュートリアルで作成する3つのマイクロサービスについて説明します。

Webサービス

フロントエンド + BFFのサービスです。
ここでは、BFFはフロントエンドのチームが所有するものとしています。
GitHubを利用したOAuth2.0による認証機能を持ちます。

Userサービス

ユーザーやフォロー関係を扱うサービスです。
REST APIを各サービスへ提供します。

Tweetサービス

ツイートを扱うサービスです。
REST APIを各サービスへ提供します。

採用技術

本チュートリアルで作成するサンプルにおいて使用する主要な技術を列挙しておきます。
詳細は各サービスの章で説明します。

アーキテクチャ系

  • Microservice
    • 全体のアーキテクチャとして採用
  • BFF(Backend for Frontend)
    • フロントエンドと各サービスのAPI呼び出しパターンとして採用
  • REST API
    • サービス間通信のI/Fとして採用
  • MongoDB
    • NoSQLデータベース
    • Userサービス、Tweetサービスのデータベースとして採用

実装系

  • Node.js
    • 今回は全サービスの言語として採用
    • もちろん、Microserviceなので、各サービスで好きな言語を使用できる
  • Nuxt.js
    • Vue.jsを利用したSPA + SSRフレームワーク
    • WebサービスでUIフレームワークとして採用
  • Vuetify.js
    • Vue.js向けのマテリアルデザインライブラリ
    • UIの見た目をそれっぽくするためにNuxt.jsに組み込んで利用する
  • Express.js
    • Node.js製サーバーサイドのデファクトスタンダード
    • WebサービスのBFF部分やUserサービス、TweetサービスのREST APIサーバーとして利用
  • mongoose
    • Node.jsからMongoDBを利用するためのライブラリ
    • スキーマ定義も可能

第1章 まとめ

この章ではこれから作成するマイクロサービスの概要を紹介しました。
次の章からは実際に各サービスを作成していきます。

次章: 第2章 Tweetサービス

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
53
Help us understand the problem. What are the problem?