orangeitems’s diary

40代ITエンジニアが毎日何か書くブログ

OSSを知りパブリッククラウドを知る 各技術の入門記事まとめ

f:id:orangeitems:20191017164436j:plain

 

はじめに

パブリッククラウドのサービスをいろいろと調査している最中なのですが、たくさんサービスがありますね。1つのパブリッククラウドで絞っても100~200あり、全てを把握されている方は少ないのではないでしょうか。それが複数のパブリッククラウドとなる果てしない世界です。

ただ、よく内容を見ていると、パブリッククラウドごとに同じサービスを違う名前で呼んでいるケースも多いです。結局はインフラストラクチャー、ネットワーク、AI、Webアプリケーション作成用のPaaS、ビッグデータ分析、IoTなどのカテゴリーに全て収まっているようです。

かくパブリッククラウドで特色を出すために、例えばOracle CloudではOracle Databaseを便利に使えたり、AzureではMicrosoft製品、IBM CloudはIBMソフトウェア、AWSはAmazonがリリースしたOSS、GoogleではGoogleのサービスに連動したサービスなど、独自サービスが目立ち始めた印象です。

一方で、有名なOSSについてはどのクラウドでも共通して使えることが多く、OSSだけの組み合わせであればどのパブリッククラウドを選んでもある程度のことができる状況が生まれてきました。

さて、このOSSですが、わかっているようでわかっていないような気がして、この記事で「なぁなぁにしてきた各OSSのことを、最速でわかるようにまとめてみた」記事を慌ててまとめました。

個人だけで使うのはもったいないので、公開しておきます。 

 

 

Redis、memcached

qiita.com

今までなぁなぁにしてきたRedisをいまさらながらに勉強してまとめました。
Redisって聞いたことあるけど中身はよく知らないとか、プロジェクトでなんとなく使っているけど実はよく分かっていないなどの人向けのページです。

 

MongoDB

qiita.com

本記事は、NoSQLのMongoDBについて、最速で理解することを目標に、MongoDBの導入、mongoシェルの基本的な操作、バックアップ及びログローテーション等についてまとめました。

 

Cassandra

分散DBシステム Apache Cassandraについて~その特徴と簡易インストール編~

 IoTやデータサイエンス等でデータ解析の話をするときに、データを保存する方法として既存のリレーショナルDBに加えてNoSQLの話を聞くようになってきました。
身近なところではNetflixのレコメンドシステムやぐるなびなどでもシステムのデータベースサーバーとして利用があるようですが、今回はNoSQLに分類されるデータベースの中において人気の高いCassandraについて紹介します。

 

JSON

dev.classmethod.jp

JSONとは JavaScript Object Notation の略で、要するに「JavaScriptの中でオブジェクトを記述する書式」のことです。と言われてもなんのことだか分からない人向けの説明なので安心してください。

 

YAML

magazine.rubyist.net

YAML とは、構造化されたデータを表現するためのフォーマットです。 目的は XML と似ていますが、XML と比べて「読みやすい」「書きやすい」「わかりやすい」という利点があります。
また YAML はあくまで「仕様」であり、それを処理するライブラリの「実装」が必要です。 Ruby 1.8 では Syck というライブラリが標準で含まれています。
本稿では 3 回に渡り、YAML および Ruby のライブラリである Syck について解説します。

 

 

Elastic Search + Kibana

qiita.com

Elasticsearch は Elastic 社が開発しているオープンソースの全文検索エンジンです。
大量のドキュメントから目的の単語を含むドキュメントを高速に抽出することができます。
Elasticsearch では RESTful インターフェースを使って操作しますが、「Elasticsearch SQL」を使って SQL 文でクエリを記述することもできます。
Oracle や MySQL などのリレーショナルデータベースに慣れている人にとっては、最初はとっつきにくいと感じるかもしれません。
しかし、Elasticsearch の API はとてもシンプルなので、心配しなくても大丈夫です。

 

RabbitMQ

qiita.com

RabbitMQに関わることとなった時の自分を想定しながら、

対象: 急にRabbitMQに関わるようになった人
効果: 公式サイトや英語サイト見て実装する前段階の(本当に簡単な)見取り図
所要時間: 10分

となればと思い、まとめてみます。

 

etcd

jedipunkz.github.io

coreos が提供している etcd についてご存知ない方もいらっしゃると思いますが etcd は KVS ストレージでありながら Configuration Management Store として利用できる分散型ストレージです。Docker 等の環境を提供する coreos という軽量 OS 内でも etcd が起動していてクラスタで管理された情報をクラスタ内の各 OS が読み書きできる、といった機能を etcd が提供しています。

 

LAMP、LEMP

www.logw.jp

LAMPといえば、Linux+Apache+MySQL(MariaDB)+PHP(Python)の事をさします。しかし最近はApachの代わりにnginxが使われる事も多々あります。LAMPではなくLNMPが正しい?

nginxだから「a」が「n」になるのでは?と思った方。はい僕です。どうやら間違いみたいです。正しくはLEMP(レンプ)らしいです。「n」ではなく「e」という謎な事になりました

 

LAMPはよくきくけど、LEMPは初めて聞いた、おぼえた。

 

Terraform

qiita.com

Terraform とはインフラストラクチャ定義ツール に分類されるツールで、クラウド上のリソースを定義ファイルの状態になるように生成・操作してくれます
インフラの構成を宣言的に定義できるところが特徴で、構築手順を書くのと違って構成定義のみに集中することができます

 

Node.js

eng-entrance.com

Node.jsはサーバサイドで動くJavaScriptだ。

クライアント側とサーバー側を同じJavaScriptで書けるメリットは大きい。また、パフォーマンス向上に役立つ場合があることから近年注目を浴びている。

JavaScriptを知っている人であれば、「サーバサイドで動く? え?」という気持ちになるだろう。このページでは難しいことを極力なくしてNode.jsとは何かを初心者の方向けに解説した。

3分間で概要を押さえられるはずだ。

 

Express

qiita.com

Node.jsは言わずとしれたサーバーサイドJavascriptの実行環境。
ExpressはそのNode.jsでの王道的な開発をスピードアップするためのフレームワークです。

 

Flask

www.python.ambitious-engineer.com

PythonのWebフレームワークといえばDjangoが有名ですが、軽量なフレームワークでは最近Flaskの人気が高まっています。
非常に薄くマイクロフレームワークと言われることもありますが、その分学習コストは非常に低いため、敷居の低いフレームワークといえるでしょう。

軽量とはいえ、URLのルーティング、テンプレート、セッション等といった基本的な機能は予め使用可能です。
このため、簡単なREST APIをさくっと作りたい場合には非常に適しているといます。

また、近年プラグインが非常に充実してきており、機能を拡張すると様々な機能を簡単に構築したりできるため、ある程度の規模のシステムの構築にも耐えられるでしょう。

また、もう1点利用局面としておすすめしたいのが、社内だけで使うような簡単な分析ツールの構築です。
データセットと分析た結果を整理したり管理するのはちょっと面倒ですが、Web化して結果をDBで管理しておくといつでも見られるし、人に見せることもできます。

 

Django

python.zombie-hunting-club.com

Djangoは、Python用のフルスタックWebフレームワークであり、データベース操作やユーザ認証、セッション管理などのWebアプリケーション開発に必要な機能を簡単に実装できるように提供している。

Djangoは非常に多くの機能を持っているので、機能の少ない小さいWebアプリケーションの開発には、Flaskを使用するのも良いだろう。

今回は、Djangoを使用して、簡単なWebサーバを構築する。

 

あとがき

さすがにMySQLやPostgress、Apache HTTP Server、Kubernetesなど有名すぎるヤツは省いてあります。どちらかというと最近のクラウドっぽくて、かつしぶとく生き残ってきたプロダクト中心です。

OSSはもっと星の数ほどたくさんありますが、パブリッククラウドに絞ればこれだけ知っておけば開発者とは大抵の会話ができる。1つだけでも奥が深い世界なのですが、パブリッククラウドはどちらかというと、初心者に使いやすく提供してくれるので、どのクラウドに何があるかを先におぼえた方が良いという考えです。

これらを頭に入れたら、あとはいよいよ各クラウド独特のサービスを頭に入れていけば効率がいいと思います。

結局各クラウド陣営、勝ち残るために差別化を図ろうとしています。その差別部分を理解していくと、どのクラウドがどう便利か、理解できるようになってくると思います。