2015年7月11日土曜日

AWS VPCについて(初心者向け)

私はcloudpackというクラウドインテグレータをサービスしている会社で働いています。
その中でMSP(運用)を行うセクションを管理してたりします。

MSPではこれからクラウドをやりたいです!というメンバーから、どんな依頼(相談)も障害も
ささっと解決してしまう熟練メンバーもいたりと幅広いです。
お客様もシステム(インフラ)に関して熟知されている方、cloudpackにお任せします!
という方とさまざまです。

という事で、MSP管理者である私はちょっとわかりにくい(と感じている)ものを簡単に思える
ようにしていかなければと考えました!

今回はAmazon VPC(Amazon Virtual Private Cloud)について軽く説明してみます。


■そもそもVPCって何?
VPCは簡単にいいますと、AWS上に作るプライベートなネットワーク環境です。
一般のネットワーク環境を作る場合と同じで、下記を元に構築します。

一応ざっくりとネットワークを設計する上で必要なものを説明しておきます。
・ネットワークレンジ
→そのネットワーク環境でどのくらいノード数があるかを踏まえて、どれくらいの大きさが
必要かを考えます。
・サブネット
→ノードの役割によってインターネットに出ても良い、お互いに通信させても良いか悪いかなど
のルールを元にグループ分けするものです。また物理的な場所が分かれている場合なども
考慮しておくと良いです。そのルールの数分作成します。

ネットワークをがっつりやっている方が見たら怒られそうなくらい、ざっくりした説明ですね。

VPCについて詳しくは下記を参照して下さい。
http://aws.amazon.com/jp/vpc/


■ネットワーク良くわからないのだけど
はい。ご安心下さい。現在のAWSではVPCは必須ですが、実は勝手に用意してくれます。
正式名かわかりませんがDefault VPCと呼ばれる直ぐに使えるVPCがあります。
但し、このVPCは本当に必要最小限の設計がされているものとなります。

・ネットワークレンジ
→255.255.0.0(/16)で切られています。
・サブネット
→255.255.255.0(/24)で二つ切られています。これは東京リージョンの話で、現在有効な
アベイラビリティゾーン(AZ)が二つだからです。
*どちらのサブネットもインターネットに出られる設定となっています。

Default VPCについて詳しくは下記を参照して下さい。
http://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/UserGuide/default-vpc.html


■VPCってどんなものを設定ができるの?
はい。ざっくり言うと下記のものが設定でき、各々の設定を組み合わせます。
・サブネット
・ルーティング(ルートテーブル)
・インターネットゲートウェイ(IGW)
・DHCP
・ネットワークアクセスコントロール(NACL)

ではDefaultVPCを元に画面を交えて説明しましょう。

・Your VPCs
VPCを作成する画面です。
ここで全体のレンジを決めます。

・Subnets
サブネットを作成する画面です。
ここでサブネットで使用するレンジと、どのAZで使うかを決めます。

・Route Tables
ルーティング(ルートテーブル)を作成する画面です。
ここでVPC内及びインターネット(IGW)の通信経路を決めます。
Default VPCではVPC全体で管理していますがサブネット単位などで決める事もできます。

・Internet Gateways
インターネットに出るための設定を作成する画面です。
論理的な話としてAWSで作成してくれます。

・DHCP Options Sets
DHCPの設定を作成する画面です。
独自のDHCPが必要な場合は別ですが、基本はAWSが用意するものを使用します。

・Network ACLs
ネットワーク単位でIPアドレス(レンジ)単位で通信の制御をします。
Inboud(外→VPC)とOutbound(VPC→外)の通信に対してプロトコル・ポート・IPアドレスを
入れて許可する、許可しないを決めます。




VPCをきっちり覚えて、独自で設計・構築をする場合はネットワーク設計の知識が必要です。
AWSではSecurity Groupsと呼ばれるファイアウォールやインスタンス単位でPublic Accessを
許可する、許可しないなど出来ますが、間違って設定しても大本(VPC)で、そもそも通信が
コントロールされていればセキュリティも安心です。

AWSでは専門知識が無い一般ユーザでも使えるように設計されていますが、専門知識を
持って設計されたネットワーク構成を具現化する設定ができるようになっています。
幅広いユーザのニーズに応える工夫が素晴らしいと思いました!

2015年7月4日土曜日

AWS 認定プログラム DevOpsの対策

久々にブログ書きます!

まずAWSには現在アソシエイトレベルで3つ、プロフェッショナルで2つの認定があります。
でもってタイトルのDevOpsはプロフェッショナルの方になります。

詳しくはここ
http://aws.amazon.com/jp/certification/

ウチの会社はAWSのプレミアコンサルティングパートナーを頂いておりまして、仕事の殆どが
AWSの設計・構築・運用となってます。という事で毎日AWSばっかりさわってます。

ただ最近はお客様先に訪問したり、社内組織作り的なお仕事が多くなってきてしまいまして
自分の技術力がめっきり落ちているのでは?最近入って来たエンジニアにはアイツ偉そうに
してるけど、実は何も分かってないんじゃね?と思われていると勝手に思い込んでます(笑)

と、いう事で技術力の再チェックと、エンジニアである証明(みんなにアピール)をするために、
6月の「AWS Summit Tokyo」から日本語版が出たDevOpsを受けてきました。

結果は!

合格!!!!!!



詳細な正解率は内緒です(笑)

ちなみにSA プロフェッショナルも持ってます!


という事で、傾向と対策を自分なりの意見で書いてみます。

■傾向
CloudFormation、AutoScaling、Elastic Beanstalk、OpsWorks関連が8割くらいです。
もちろんEC2、RDS、S3の基本サービスからELB、Route53、IAM、Kinesis、DynamoDB、
SWFも出て来ますが、おまけみたいな感じです。

ただ、設定をどうするかなどではなく、概念的なものが多いです。
なので、設計が出来ないと厳しいです。SAプロフェッショナルの時も思いましたが、
設問に対する選択肢はどれも実現できるというものが殆どです。
そもそもそのような設定は出来ないという選択肢がアソシエイトではあり、実際に構築を
行う事が出来れば回答できますが、プロフェッショナルはより良い回答を選ぶというものが
多い感じです。要は設問の意図を考えどれがその内容に対して一番正しいかを選択する
という事になるので設計をする能力を試されます。

またデプロイの知識も必要です。デプロイをする知識というよりは、デプロイをするための
基盤設計の知識です。つまりはインフラ観点でソフトウェア(プログラム)をシステムとして
いかに安全に運用するかを設計するという事になります。

■対策
CloudFormation、AutoScaling、Elastic Beanstalk、OpsWorksは各AWSサービスをいかに
効率よく運用するかを補うサービスです。何となく似ているようなものですが、当然各々に
特徴があります。
そのため、各々がどのようなものなのかを知っていれば、何を採用するか設計できます。
正直、私もElastic Beanstalk、OpsWorksに関しては、ほぼさわった事がありません。
ですが、どのようなものなのかは知っていますので、設問に対して何を選択して、どう利用
するのかは答える事が出来ます。
この辺りは極論ですが、WebサイトにあるAWSの各サービスの紹介を見るだけでも十分
知識としては足ります。
→もちろん細かい機能や設定に関する内容も出ますので、まったくさわった事も無いよりは
一通りの設定や操作は覚えておく方が良いです

そこで大事になってくるのが、下記になります。
・負荷対策を自動化するには?
・費用対効果を考えてどうすればコストを抑えられるのか?
・必ず守らなければならないシステム性能を担保するには?
・問題が発生した場合にすぐに戻せるようにするには?
・セキュリティを考えて安全な方法は?

もうこの辺りになりますと、AWS云々ではなくシステム管理の知識になります。
なのでアソシエイトは合格したけれどプロフェッショナルが難しいと思う人は、システム管理
という知識をつける事から始めると良いかもしれません。

おまけ的な話ですが、170分で80問。つまり1問当たりの時間が2分少々という時間との闘いも
あります。なので設問はまずは流し読みして、選択肢を見てから、再度設問にあるキーワード
を拾うのがポイントかと思います。
しかし、経営層に問題を解決するように言われて、2,3分後に回答しないといけないと言う
血を吐きそうな状況です。

■まとめ
・CloudFormation、AutoScaling、Elastic Beanstalk、OpsWorksの特徴を覚える
→出来れば一通りさわってみる
・システム管理としての設計の知識を覚える
→それプラスでデプロイ
・設問はざっくり読んで、まずは選択肢の内容をチェックする
→ポイントなるキーワードを探す(費用を抑える、セキュリティなど)

尚、あくまでも上記の内容は私が受けてみての感想なので、個人差もあるかと思います。
なるほど、そういう観点の考え方もあるのか程度で参考にして頂ければ幸いです。