記事一覧

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

バルテックアドベントカレンダー 12/21 ブルーグリーンデプロイメントのお話

入社二年目の早川です。

今年ももう10日あまりとなりました。皆様は2015年はどんな年だったでしょうか。
自分は引越しをしたり一眼デジタルカメラを買ってしまって写真にハマったりと割と色々変化があったのですが、一番のニュースは某オンラインゲームのイベントに行ってみたら、その公式ニコ生に思いっきり映ってしまったことぐらいですかね。割とどうでもいいですが。

さて本題。今の現場でインフラとしてAWSを使っていまして、面白そうだったのでAWSとかクラウドサービスについて色々調べてみました。

・そもそもAWSってなんなの?

Amazon Web Services(アマゾン ウェブ サービス、AWS)とは、Amazon.com により提供されているクラウドコンピューティングサービス(ウェブサービス)である。
2006年7月に公開され、Amazon Web Services は他のウェブサイトやクライアントサイドアプリケーションに対しオンラインサービスを提供している。これらのサービスの多くはエンドユーザに直接公開されているものではなく、他の開発者が使用可能な機能を提供するものである。
Amazon Web Services の各種サービスはHTTPを通じ、REST および SOAP プロトコルを使用してアクセスされる。費用は実際の使用量に応じて決定される。

(Wikipediaより)

要するにAmazonがやってるクラウドサーバのサービスです。アレだけの通販サイトを運営してるんだからそりゃインフラ技術も凄いわけでして。サーバだけでなく付随する様々な管理機能等も魅力の一つとなっています。

・クラウドサーバって何が凄いの?
数年前からそこかしこで聞かれるクラウド。なんだかんだで流行ってるんですがよく分かってないような。
それにしてもいやーまさかスマブラに参戦するとは・・・って違いますね(注1)

???「興味ないね」(注2)

さてクラウドサーバですが、やはり物理サーバよりも管理などが色々と楽なんですね。
物理サーバだと一台ずつ物理的に設置して配線してそれから構築・・・という手順を踏んで、さらに物理的に壊れていないかを毎日チェックしなければならなかったり(前職でちょっとやってました)、色々と大変だったのですが、クラウドであればその心配はなし。
もちろん通常のレンタルサーバのサービスを利用したり、管理をどこかに委託したりすれば同様の手間からは解放されるわけですが、クラウドの場合はさらに構成の管理が出来てしまうわけです。
例えばサーバを増設・拡張したい場合、物理サーバの場合はまた新しくサーバを購入して、同じように設置・配線・構築、さらに既存のサーバとの同期処理の設定などなど・・・と手間がかかりまくっていたわけですが、クラウドサーバなら設定画面を操作するだけでOKなわけです。
また、逆に減らすことも可能で、一時的にサーバを増設しなければならないんだけど使い終わったらそんなに要らないっていうような場合なんかにも対応可能。
特に時間帯によって負荷の増減が激しかったり(昼よりも夜のほうがアクセス数が多いとか)、何らかの事情で一時的に負荷が上がることが予想される場合(例えばサイトがメディアで紹介されてその時だけ一気にアクセス数が上がる等)に、その時間帯だけサーバを増やしておくということが可能になり、これは非常に効率がいいわけですね。

・ELB
さて、負荷分散のために何台もサーバを用意したとしても、適切に各サーバにアクセスを振り分けてやらなければ結局のところ過負荷でサービスダウンになってしまって意味が無いわけです。そこで各サーバにサーバアクセスを分散して調節する仕組みが必要になります。
それがこのELB。Elastic(弾力性のある)Load Balancingという名前の通り、かなり柔軟なことができるっぽいです。
ロードバランサ自体は普通の物理サーバ群でも使用するのですが、クラウドサーバの場合は前節で説明したようなサーバ数の増減だったり、さらにロードバランサ自体の増減まで管理してくれるという優れもの。クラウドサーバには欠かせない存在というわけですね。

・ブルーグリーンデプロイメント
ようやく本題に来ました・・・今回これを紹介したいと思ってここまで書いてきました。何しろ名前がカッコイイじゃないですか。
さてそんなわけでまずはデプロイメント(デプロイ)とはなんぞやという話。この辺はさすがに解説要らないかな・・・と思うのですが、要は開発したプログラムを本番環境(或いはステージング環境とか開発環境以外の場所)に展開することですね。それまでの努力が報われる一瞬でもあります・・・・失敗するとエライことになるけど(遠い目

さてそこでブルーグリーンデプロイメント。頑張って手順を解説してみます
1.本番と全く同じ構成のサーバをもう一つ用意し、ブルーサーバとする。また、本番として運用しているサーバをグリーンサーバとする。
2.ブルーサーバに最新のプログラムを展開する。この時点ではまだ外部からのアクセスはグリーンサーバが引き受けている状態。
3.グリーンサーバに接続されていた本番用DBなどのサーバをブルーサーバに繋ぎ直し、外からのアクセスがブルーサーバに繋がるよう変更する

これだと、ダウンタイム(本番サーバのプログラムを書き換えている間サービスが止まってしまう時間)がほぼゼロになり、安全にサービスを継続することが出来ます。
さらに、万が一デプロイ後に不具合が発覚した場合、手順3と全く逆の操作をしてグリーンサーバに繋ぎ直せばこれまた一瞬で復旧できるわけです。
そして用済みになったグリーンサーバはそのまま破棄してもOKですし、次のリリースのためのステージングテスト環境として使うということもできます。
この場合、ブルーサーバが本番になっている間はグリーンサーバをステージング環境として最終テストに使用し、そのまま本番として運用、次のリリースがある時には今度はブルーサーバをステージング環境として最終テストを行い・・・というような運用も可能だったりと無駄がないわけです。

ところで青といえば今年30年ぶりに新シリーズが放送されたルパン三世のジャケットが青ということで話題になってましたね。そして初代ルパンのジャケットは緑。あと赤とピンクがあれば完璧(注3)なんですけどね。ってどうでもいいですね。

・終わりに
今回はちょっと業務がかなり忙しくなってしまって時間が足りなかったというのもあるんですが正直gdgdで申し訳ない。(あと小ネタをもっと仕込みたかった)
バルテックの皆さんはプログラマとして言語とかアルゴリズム的なことは色々と勉強されていると思うのですが、たまにはこういうインフラ面のことにも目を向けてみると面白いんじゃないかなと思います。インフラについても語れるエンジニアってカッコイイですよ(多分
今回紹介した内容はそれぞれ一つだけ取り出しても立派に1つの記事になるような内容だと思うので、興味を持ったら色々調べてみてください。
また、AWSのサービスは個人でも利用できるので、自分でサーバを組んでみて色々試してみるのも面白いかもしれません。

それでは皆様良いお年を!

参考にしたサイト
Amazon Web Service
AWSサイト内「Elastic Load Balancing」
AWS Solutions Architect ブログ「AWS Black Belt Tech Webinar「Elastic Load Balancing (ELB)」資料公開」
Wikipedia「Amazon Web Service」
「Immutable Infrastructure~デプロイメントをめぐるシステムインフラの管理~」
注1:スクウェア(現スクウェア・エニックス)のRPG『ファイナルファンタジー7』の主人公クラウド・ストライフのこと。先日任天堂の人気ゲーム『スマブラ3DS/WiiU』に参戦することで話題に。最近はスマブラの参戦キャラが発表される度にニュースになるぐらいになってますね。

注2:注1のクラウドの口癖。あくまでも筆者はSEGA派なのでスマブラには興味はない・・・といいたいところですが昔はFFとかDQもやってたので(過去形)ちょっとは興味があったりなかったり。

注3:赤ジャケットはTVの第二シリーズで恐らく一番有名なルパンのジャケット。ピンクは第三シーズン(ルパン三世PARTIII)で着ていたジャケット。ちなみに2008年に『ルパン三世 GREEN vs RED』というOVA作品が出ていたらしい(興味はあったけど未見)
スポンサーサイト

コメント

No title

AWSとDockerで遊んでみようとおもいつつ早一年
月日がたつのは早いものです。

運用やってたときに、本番リリースは手動でWEBサーバの向き先を変えて、APサーバを切り離してプログラム変更→向き先戻して本番リリースみたいなことしてましたね。
たまにロードバランサの向き先変えてやってたりもしましたが。
AWSだとこの辺が楽なんでしょうねぇ。

コメントの投稿

非公開コメント

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。