派遣で働くエンジニアのスキルアップを応援するサイト

PRODUCED BY RECRUIT

ゆるく学ぶサーバー入門~イマイチわかりづらいサーバーの基礎を解説:最近はAWSとDockerが必須なんでしょ?

最近では、AWSなどのクラウドプラットフォームや、Dockerがプロジェクトに取り入れられることが多くなりました。それに応じて、“それらを使えなければならない”という空気がただよっています。たしかに、AWSやDockerは便利ですが、「必須のもの」なのでしょうか。そんな疑問を技術書人気著者が解説します。

【筆者】小笠原種高さん(ニャゴロウ先生)
技術ライター、イラストレーター。システム開発のかたわら、雑誌や書籍などで、データベースやサーバー、マネジメントについて執筆。図を多く用いた易しい解説に定評がある。主な著書に『なぜ?がわかるデータベース』(翔泳社)、『これからはじめる MySQL入門』『図解即戦力 Amazon Web Serviceのしくみと技術がこれ1冊でしっかりわかる教科書』、最新刊には『ゼロからわかるLinuxサーバー超入門 Ubuntu対応版』(技術評論社)がある。

AWSやDockerとは何か

そもそも、「AWSやDockerとは何か」と言えば、AWSは、「サーバーなど一式を貸してくれるレンタルのクラウドプラットフォーム」、Dockerは「隔離されたプログラムの実行環境を用意するソフトウェア」です。

そしてどちらも、「サーバーを用意するのに便利だからよく使われるもの」です。

特に大きな共通項の一つが、「サーバーOSや、ソフトウェアのインストールが一瞬でできる」ことです。通常、これらを準備するには、元となるイメージを用意して、それをインストールして……と時間がかかるものですが、クラウドや、Dockerでは、時間がかかりません。

それゆえに、さまざまなプロジェクトで活用されるようになりました。

■AWSとは?

AWS(AmazonWebServices)とは、Amazon Web Services社が提供するクラウドプラットフォーム。サーバーやネットワークなどをインターネット経由で貸してくれるサービスが代表的。ウェブサイト上のコントロールパネルから、クリックで簡単にサーバーが用意でき、変更も可能。AWSの他に、Google社の提供するGoogleCloudやMicrosoft Azureも人気である。

(出典)図解即戦力 Amazon Web Servicesのしくみと技術がこれ1冊でしっかりわかる教科書 p.10より

■Dockerとは?

Docker とは パソコンやサーバー上に、独立したプログラムの実行環境を作れる仕組み。Docker を使うと、サーバー上を細かい部屋に分けられるようになるので、独立した環境に、特定のプログラムを入れられるようになります。この独立した環境をコンテナ(container)と言う。

▲Dockerを使うと、異なるOS間での行き来がしやすくなったり、サーバーの移行などもしやすくなったりする。そのため、人気が高い。クジラのアイコンが有名

■新技術との付き合い方

AWSもDockerも便利なものです。でも「必須なのか」と問われたら、「プロジェクトによる」としか答えようがありません。

この業界では、何かが流行り始めると、一斉に「あれを使わなきゃ、これを使わなきゃ」といった空気になりやすいですが、あまり振り回されてはいけません。

例えば、皆さんが通勤に使っている鞄ですが、電車の中で見回してみると、実にさまざまです。

リュック型の人も居れば、肩にかけるタイプの人も居ます。筆者のように、手ぶらの人だって居るのです。これは、その人の仕事に必要なものや、体型、性格により、必要な鞄が違うからです。

学生時代は、全員が同じ教科書を使い、場合によっては参考書も同じでしたが、仕事を始めれば、そんなことはないですよね。ですから、必要な鞄も違うのです。

同じように、AWSやDockerも、プロジェクトにとって「必要なのか、そうでないのか」によって判断されるべきです。

こうした技術を使ってないと、「時代遅れだ」「よくない現場だ」と言われがちですが、果たして本当にそうであるのか、よく調べ、よく考える必要があります。

「皆が使っているから」で導入しても、うまくいきません。高いスーツは良いものですが、土木作業には不向きです。安くても動きやすい服装が欲しいときがあるように、サーバーもハイスペックなら良いわけではありません。

AWSを導入すれば、便利な分だけ、ランニングコストがかかりますし、Dockerを入れるのはおおげさだという現場もあります。

■だとしたら、学ばなくてもいいんじゃない?

新技術について、まったく学ばなくてよいかというと、そうではありません。

やはり、エンジニアとしての引き出しは多い方がよいからです。ですから、まずは概要を掴んでおき、いざ必要となったら、しっかり学べるような体制にしておくと、スムーズです。

細かいコマンドや、操作方法まで熟知しておかなくてもよいので、「その技術がどんなもので、どんな利点があって、何に使えるのか。デメリットは何か」くらいを押さえておけるとよいでしょう。

また、新技術さえ学んでいればよいというものではなく、多くの新技術は、旧来の技術を前提に成り立っています。

例えば、新しい技術であるかのような印象を持たれているDockerでも、「あればjail(BSD環境での似たような仕組み)だよね」と言うベテランが多くいました。

つまり、技術がしっかりしていれば、新しい概念が出てきても、対応できるのです。

AWSでも同じです。AWSの学習*に苦戦している人の多くは、AWS固有のことがわかっていないのではなく、サーバーやネットワークといった基礎がわからずに、AWSの使い方を掴み損ねているのです。

ですから、まずは、基礎をしっかり学び、その後に少しずつ、引き出しを増やしていけると、よいでしょう。

AWSを学びたい方はこちらから!

まとめ:サーバーを学ぶために、必要なこと

さて、全3回にわたり、サーバーについてお話ししてきましたが、最後に「今後、サーバーを学んでいくには、どうしたらよいか」で締めましょう。

サーバーを学ぶのに、最も手っ取り早いのは、何か一つサーバーを作って、動かしてみることです。

最初は、クラウドなどを使って構築してもよいので、WordPressなどを動かせるようにしてみましょう。何もナシに進めるのは、ツライでしょうから、書籍や動画などを参考にして構いません。なんでもよいので「これがサーバーなのか」という体験をしてください。

そして、一度サーバーを作ってみたら、そこから知識を広げましょう。

他の種類のサーバーを立ててみてもよいですし、そのサーバーをカスタマイズしてもよいです。「サーバーを立てること」自体を目的にしても、なかなか身につきづらいので、想定するサービスや、アプリケーションがあると、なおよいですね。

■手を動かすのはハードルが高い…そんなときは?

「ちょっと、実際にサーバーを立てるのはつらいな……」という方は、「妄想のサーバーを立てる」という手もあります。実際にサーバーを立てるつもりで、やり方をさぐっていくのです。

イメージはどこからダウンロードして、ソフトウェアには、どのような設定をして……と考えていくうちに、知識が身についてきます。

実際に手を動かした場合と違って、エラーなどがでないので、あまり意味がないと思われるかもしれませんが、何もしないより、遙かに勉強になります。どんなことでもよいので、まずは第一歩。そこが大切です。

ニャゴロウ先生のまとめ
皆さんが思っているよりも、サーバーとはずっとシンプルで身近なものです。また、実際に触ってみると、楽しいものでもあるので、まずは第一歩から挑戦してみてください。妄想だってよいんですよ!!それでは、よきサーバーライフを!!

▼これまでの「ゆるく学ぶサーバー入門~イマイチわかりづらいサーバーの基礎を解説」
サーバーとは何者なのか
Linuxはどのくらい勉強すればいいの?

▼あわせて読みたい!「AWS文明開化〜イマイチ掴めないクラウドの正体とメリットを解説〜」
AWSってなんでこんなにチヤホヤされてるの?
作っては捨てる時代がやってきた
AWSとうまく付き合うには?