はじめに
面白い会社でインフラ兼サーバーエンジニアをしている@enzenです。
インフラ周りっていろいろありすぎて情報がゴチャゴチャしすぎじゃないですか?
もともとアプリケーションエンジニアだったので、インフラ周りの全体像を学ぶのにすごく時間がかかりました。
そこで登場人物?をまとめたらきっと役に立つはずと思いこの記事を書くことにしました。
先人たちが記述してくれた記録をまとめる記事になります。先人たちに感謝!感謝!
有名どころをメインにまとめて行きたいと思います。
OS
とりあえずOSがないとなにも始まりませんからね。以下はWikiから引用。
オペレーティングシステム(英語: Operating System、OS、オーエス)とは、コンピュータのオペレーション(操作・運用・運転)のために、ソフトウェアの中でも基本的、中核的位置づけのシステムソフトウェアである。通常、OSメーカーが組み上げたコンピュータプログラムの集合として、作成され提供されている。
簡単にまとめるとユーザがコンピュータを動かしやすくするための基盤となるシステムということですね。
みなさんOSの種類何個言えますか?
私は5個くらいしか記憶してませんでしたが実はOSって沢山あるんですよね。(Linuxは種類がとても多い)
そのなかでも有名どころとその概要を以下にまとめます。
OS名 | 概要 | 参考リンク |
---|---|---|
Windows | 一般的なコンピュータにインストールされているOSといえばWindows | 公式 |
macOS | AppleのコンピューターにインストールされているOS | 公式 |
Unix | MacOSなど様々なOSの原型となったOS | Wiki |
Linux | オープンソースのOS | 公式 |
BSD系 | Unixが元となったオープンソースのOS | 公式 |
iOS | Apple社が開発したiPhoneやiPadに利用されるOS | 公式 |
Android | Google社が開発した主にスマートフォンに利用されるOS | 公式 |
OSといえばこんなものかと思うが、我々エンジニアにはかけがえのないLinuxディストリビューションの紹介もしようと思います。
様々なディストリビューションが存在するが、主流となっている Red Hat系
Debian系
Slackware系
の3種類から少しピックアップしたいと思います
Red Hat系
|OS名|概要|参考リンク|
|:---|:---|:---|:---|
|RHEL|クライアントやサーバー向けのOS|公式|
|CentOS|RHELをクローンしたOS|公式|
|fedora|実験的な要素の強いOS|公式|
|Korora|fedoraをより使いやすくすることを重視したOS|公式|
Debian系
|OS名|概要|参考リンク|
|:---|:---|:---|:---|
|Debian|Debianプロジェクトによって開発が進められている安定性に定評があるOS|公式|
|Ubuntu|Debianをベースとした使いやすさに特化したOS|公式|
|ZorinOS|UbuntuをベースとしたビジュアルにこだわったOS|公式|
|Linux Mint|Linux Mintは使い勝手が良くモダンでエレガントな環境と提供するOS|公式|
|Pinguy OS|WindowsやMacユーザーも違和感なく使えることを重視したOS|公式|
|MX Linux|エレガントなデスクトップでDebianベースのOS|公式|
|elementary OS|Macを彷彿させるOS|公式|
Slackware系
|OS名|概要|参考リンク|
|:---|:---|:---|:---|
|Slackware|最も古いLinux系OS|公式|
|openSUSE|初心者から開発者までユーザーを問わず誰でも使えるOS|公式|
いやー沢山ありますねー。
Linuxディストリビューション選びでお悩みの方はこちらの【2018年】初心者にオススメなLinuxディストリビューションを参考にされると良いかもしれません。
Webサーバ
以下はWikiから引用。
Webサーバ(ウェブサーバ、英:Web server)は、HTTPに則り、クライアントソフトウェアのウェブブラウザに対して、HTMLやオブジェクト(画像など)の表示を提供するサービスプログラム及び、そのサービスが動作するサーバコンピュータを指す。
Webサーバーについてよくわかっていない方は
今更聞けない!Webサーバーの仕組みと構築方法
ウェブサーバ (Webサーバ)とは
などをご覧いただくとわかりやすいかと思います。
それでは有名どころを簡単にまとめます。
名前 | 概要 | 参考リンク |
---|---|---|
Apache | 世界中で使用されているWebサーバーソフトウェア |
公式 Apacheとは?Webサーバーの仕組みと人気サーバーソフトを徹底解説 |
Nginx | イベント駆動モデルで大量アクセスに強く、静的コンテンツを高速で配信できるWebサーバーソフトウェア |
公式 nginxでWebサーバを構築してみよう |
IIS | Microsoft製のWindows向けのWebサーバーソフトウェア |
公式:Web サーバー (IIS) の概要 IISとは |
APサーバ
以下はWikiから引用。
アプリケーションサーバ(英: Application Server)は、ビジネスロジックなどを実装したアプリケーションソフトウェアを実行することを専門とするコンピュータネットワーク上のサーバコンピュータ、もしくはそのようなコンピュータ上でのアプリケーションの実行を管理補助するミドルウェアのこと。
簡単にまとめるとプログラムが置いてあるサーバということですね。
ここも有名どころを簡単にまとめます。
名前 | 対応言語 | 概要 | 参考リンク |
---|---|---|---|
Tomcat | Java | Java ServletやJavaServer Pages (JSP) を実行するためのWebコンテナ | Tomcatって何ですか? |
JBoss | Java | Javaによるオープンソースソフトウェアの総称でJava EE標準準拠のAPサーバとして認識されることが多い | 企業向けアプリの常識を学び、JBossの環境構築 (1/2) |
GlassFish | Java | Java EE準拠のアプリケーションサーバ | GlassFishからアプローチするJava~入門編~第1回「GlassFishとNetBeansのインストール」 |
WebSphere Application Server | Java | IBM製のJava EE準拠のアプリケーションサーバ | 公式 |
unicorn | Ruby | Railsなどでつくられたアプリケーションを動かすアプリケーションサーバ | Railsを動作させるアプリケーションサーバunicornとは?概要やnginxとの違いなど |
puma | Ruby | Railsなどでつくられたアプリケーションを動かすアプリケーションサーバ | Rails開発におけるwebサーバーとアプリケーションサーバーの違い(翻訳) |
DBサーバ
WikiがなかったのでWeblioから引用。
別名:データベースサーバ
【英】database server
データベースサーバーとは、データベースを内部に持ち、データベース管理システムが動作しているサーバーのことである。
データベースサーバーは、クライアントからのリクエストなどに対してデータベースの検索などの処理を行い、処理結果を返す。
すごく簡単にいうとデータベースが置いてあるサーバということです。
そんなDBサーバに必要なDBの有名どころを簡単にまとめます。
名前 | 概要 | 参考リンク |
---|---|---|
MySQL | 現在、世界中で最もよく利用されているオープンソースのデータベースのひとつで高速で使いやすいことが特徴 | 公式 |
PostgreSQL | MySQLと双璧をなすオープンソースのデータベースで機能が豊富かつ標準SQLへの準拠度が比較的高い | 公式 |
SQLite | アプリケーションの一部に組み込まれて動作するタイプのデータベースで手軽さと高速な動作から中小規模の開発向け | 公式 |
Oracle DB | 非常に高機能なデータベース | 公式 |
SQL Server | マイクロソフト系システム開発で幅広く利用されているデータベース | 公式 |
DB2 | 大規模システム構築などで世界的に使われているデータベース | 公式 |
H2 Database | Javaで実装されたオープンソースのデータベース | 公式 |
プロビジョニング
サーバーやOSの話をしてきましたがこれらの設定やセットアップを手動でやるのは危険です。
ヒューマンエラーやOSやバージョンの違いで思いもしないハマりポイントがあります。
そんな時に恐ろしく便利なプロビジョニングツール!!
以下はWikiより引用
プロビジョニング(英: Provisioning)は、本来は「準備、提供、設備」などの意味であり、現在では通常、音声通信やコンピュータなどの分野における、ユーザーや顧客へのサービス提供の仕組みを指す。
プロビジョニングツールには大きく3種類あります。
- Bootstrapping - OSをインストール/設定
- Configuration - ミドルウェアをインストール/設定
- Orchestration - アプリケーションのデプロイ
Bootstrapping
名前 | 概要 | 参考リンク |
---|---|---|
Vagrant | 開発環境の構築と共有を簡単に行うためのツール | 開発環境の構築・共有を簡単にするVagrant入門 |
Amazon EC2 | セキュアでサイズ変更可能なコンピューティング性能をクラウド上で提供するウェブサービス | 公式 |
Docker | コンテナ型の仮想環境を作成、配布、実行するためのプラットフォーム | Docker入門(第一回)~Dockerとは何か、何が良いのか~ |
Configuration
名前 | 概要 | 参考リンク |
---|---|---|
Chef | ファイルに記述した設定内容に応じて自動的にユーザーの作成やパッケージのインストール、設定ファイルの編集などを行うツール | サーバー設定ツール「Chef」の概要と基礎的な使い方 |
Ansible | 設定ファイルがシンプルで、管理対象サーバーに特別なソフトウェアをインストールすることなく利用できるなど、最小限の手間で各種設定を自動化できるのが特徴 | Ansibleをはじめる人に。 |
Puppet | スタンドアロンおよびクライアント/サーバー構成でサーバー設定を集中管理できる設定管理ツール | 公式 |
Orchestration
名前 | 概要 | 参考リンク |
---|---|---|
Capistrano | Ruby 製の自動デプロイ (& サーバー操作) ツールで複雑な Rails 製アプリケーションのデプロイ作業をコマンド数行でさくっと片付けられるようになる | 公式 |
AWS Elastic Beanstalk | Java、.NET、PHP、Node.js、Python、Ruby、Go および Docker を使用して開発されたウェブアプリケーションやサービスを、Apache、Nginxなどの使い慣れたサーバーでデプロイおよびスケーリングするための、使いやすいサービス | 公式 |
Amazon Elastic Container Service | Docker コンテナアプリケーションを AWS で簡単に実行、スケール、保護し、コンテナとしてローカルでパッケージングされたアプリケーションは、Amazon ECS によって管理されるコンテナと同様にデプロイすることが可能 | 公式 |
CI
以下はWikiから引用。
継続的インテグレーション、CI(英: continuous integration)とは、主にプログラマーのアプリケーション作成時の品質改善や納期の短縮のための習慣のことである。エクストリーム・プログラミング (XP) のプラクティスの一つで、狭義にはビルドやテスト、インスペクションなどを継続的に実行していくことを意味する[1]。特に、1990年代後半以降の開発においては、継続的インテグレーションをサポートするソフトウェアを使用する傾向が強まってきた。
簡単にまとめると開発や保守を円滑にすすめるための仕組みです。
名前 | 概要 | 詳しくは参考リンク |
---|---|---|
Jenkins | ソフトウェアのビルド、検証、サーバへのインストール等の一連作業を自動化する事が出来るツール | サルでもわかるJenkins入門〜自動テスト環境を構築しよう |
Travis CI | GitHub上のソフトウェアのビルドやテストを行う、オンラインで分散型のサービス | GitHubと連携できる継続的インテグレーションツール「Travis CI」入門 |
Bamboo | 継続的インテグレーション、デプロイメント、デリバリーを行うプロフェッショナルチームに選ばれているツール | 公式 |
Circle CI | 継続的インテグレーションツール「Jenkins」と同様な機能を提供し、ビルド/テスト/デプロイなどについて自動実行できるサービス | 【CircleCI】CircleCI 2.0からはじめる個人での簡単なCI導入方法 - githubとの連携まで |
システム監視系
システムの運用に欠かせない監視系ツール、ログ収集、通知など様々なツールやサービスのご紹介です。
おわりに
こうしてまとめてみると本当にさまざまなサービスやツールが存在しますよね。
全てを勉強している暇はないので自身の環境に合わせたものを取捨選択する必要があります。
効率的にシステムやアプリケーションを構築して、安全に運用して行きましょう!