Web3.0から考える最新Web系技術のまとめ

2023年01月18日
 
2023年01月18日

みなさんこんにちは。ゆーろんです。

今回はWeb3.0と呼ばれる次世代のインターネットから考えた最新のWeb系技術に関して調べたのでまとめました。

はじめに「Web3.0」とは

Web3.0とは「分散型インターネット」と称される次世代のインターネットを指します。
それを構築するためのヒントとなるワードとしては「メタバース」「仮想通貨/ブロックチェーン」「NFT」などがあります。

それに加わる新勢力として2022年に「高性能AI」が登場しました。
もともとAIはビックデータ解析などとの関係もあり、2015年以降から注目され使われていましたが、昨年一気に可視化される形となりました。

具体的にはOpenAIの「ChatGPT」や「NovelAI」「StableDiffusion」など画像生成系AIなど注目を集めました。他にAIを使った人工音声としては「CoeFont」「VOICEVOX」などもあります。
これらのサービスやテクノロジーを応用しWebアプリケーションの開発を進めるためのWebアプリの最新技術としては「マイクロサービス」「Go」「RPC」「Kubernetes」などが注目されています。

Graph

マイクロサービス

マイクロサービスは、プロダクト(Webアプリ)を機能に沿った複数の小さい「マイクロサービス」に分割し、連携させることで大きいソフトウェア機能を実現することを指します。対照的なサービスとしてはモノリシックサービスが上げられます。これはすべてのサービス(機能群)を1つのシステムで実現するものです。

マイクロサービスアーキテクチャでは機能ごとに独立したサービスを構築します。独立したサービスを繋ぐために重要な技術やインターフェスとしてはAPIやRPCがあり、これらはマイクロサービスの連携に欠かせません。マイクロサービス構築するための技術としてはGo /gRPC, Kubernetes(k8s)が注目されています。

Graph

参考記事(外部リンク)


OGPサムネイル

What Are Microservices Really All About? (And When Not To Use It)

Weekly system design newsletter: https://bit.ly/3tfAlYDCheckout our bestselling System Design Interview books: Volume 1:

Go と gRPC

Go

Googleの開発した静的型付けコンパイラ言語です。
Goには簡単にWebサーバーの構築ができる特徴(gRPCサーバー)があります。またKubernetesとの相性がいいため日本のモダンWeb界隈で非常に注目されています。

参考記事(外部リンク)


OGPサムネイル

サービス間通信のための新技術「gRPC」入門 | さくらのナレッジ

異なるマシン上で動作するサービス間で情報をやり取りする手法にはさまざまなものがあるが、その中でも近年注目されているのが「gRPC」だ。gRPCはGoogleが自社サービス向けに開発して使用していたものをオープンソース化し […]

gRPC

Googleが開発したRPCです。
RPCは「遠隔手続き呼び出し」とも呼ばれ、コンピュータで動作するソフトウェアからネットワークを通じて別のコンピュータ上で動作するための通信規格です。
gRPCにはクライアント側が他端末のサーバーアプリのメソッドを直接呼び出せる特徴があるため非常に注目されています。

API

API(Application Programming Interface)はアプリケーションの機能同士を繋げるインターフェスです。
その歴史は古くXML-RPC, SOAPなどいろいろあったようですが、今はREST APIが注目されほぼ主流となっています。

マイクロサービスにおいてAPIはクライアントと各サービスを繋ぐために非常に重要なものです。
基本的にREST APIを使ってDBとやり取りをする機能を作る場合、1つのURIに対して1つのデータベース操作機能(CRUD処理)を提供することが多いですが、サービスが複雑な場合、REST APIでは大量のURIを作成する必要があります。

そこで、その問題を解決するために1つのURIで複数の機能を提供できる拡張技術の1つとして「GraphQL」が開発されました。
他のREST APIに関連する技術には「Swagger」や「tRPC」などもあります。

Kubernetes と Docker

Kubernetes(k8s)

Kubernetesはコンテナの運用管理と自動化を行うために設計されたオープンソースソフトウェアです。Kubenetesが管理する操作の対象はDockerなどのコンテナとなっています。

Docker単体でのコンテナにはコンテナ自体の管理や別サーバと連携ができない問題がありますが、Kubenetesを用いることで複数コンテナでサービスを提供/運用、ネットワークの連携管理が簡単になります。こういった仕組みはオーケストレーションと呼ばれます。

Docker

DockerはVM(Virtual Machine)の問題を解決したコンテナ仮想化技術です。
旧来の仮想化技術であるVM(VMware, Virtual Boxなど)はOSも設定する必要がある問題がありましたが、Dockerの登場によりアプリケーションを動かすためのミドルウェアとアプリのシステム(ソースコード群)のみでアプリケーションを構築できるようになりました。

またVMと違い圧倒的軽量な点も特徴の一つです。
Dockerのメリットにはミドルウェアの環境ごと共有できるため、Docker環境があれば誰でもすぐにアプリケーションを動かせる点、IaaS(AWSで言うFargateのECS基盤)にスクラップ/ビルドしやすい特徴があります。

つまりDockerを開発環境に用いることでEC2/VPSなどの仮想サーバにSSHで入ってLinuxコマンドを叩いてミドルウェアを設定するというステップを解決できるということです。

Graph

参考資料


OGPサムネイル

Microservices Definition, Examples, Architecture, and Best Practices

Microservices break down software applications into modules with detailed interfaces and specialized functions. Click he


OGPサムネイル

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

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

よろしければシェアしてくださいね!
タグ:

関連記事