機雷がなんだ! 全速前進!

SEというかプログラマというか、日々のエンジニア生活の中で体験したことなどを中心に書きためていくことにする。

AWS 認定ソリューションアーキテクト – プロフェッショナル(SAP)学習用セミナ動画まとめ

Youtubeに公開されているAWS公認セミナ動画でAWS 認定ソリューションアーキテクト – プロフェッショナル(SAP)の試験対策に役立ったと感じたものを個人的にまとめてみました。 知ってるとこはガンガンSkipしてOKなので、分からないところを繰り返し見て理解を深めるのが良いと思います。また、下記に掲載したセミナ動画は今現在(2019年8月16日)において比較的新しいものをチョイスしていますが、Youtubeには古いセミナ動画もけっこう沢山あるので、なるべく新しいもの(直近3年以内くらい)を見るようにしましょう。

AWS公式Youtubeページ

www.youtube.com

必見と思うもの

できれば見といた方がいいと思うもの

※上記は、個人の独断と偏見でまとめたものですのでご注意ください。

AWS 認定ソリューションアーキテクト – プロフェッショナル(SAP)を取得しました

AWS 認定ソリューションアーキテクト – プロフェッショナル を取得(1回目:6/15不合格、2回目:8/10合格)しました。

合格するまでの勉強方法などのメモです。誰かの何かの役に立てば幸いです。

AWS認定について

詳細は以下の公式ページに記載されています。

aws.amazon.com

ざっくり言うとAWS(Amazon)が公式に認定するベンダー資格です。大きくは2つのレベル(アソシエイトとプロフェッショナル)に分かれています。

また、プロフェッショナルとは別に専門知識というカテゴリも用意されており、以前は英語のみ受験が可能だったのですが、現在は全て日本語での受験が可能になっているようです。

さらに、以前プロフェッショナルのレベルと専門知識の認定試験は、アソシエイトを取得した人しか受験できませんでしたが、2018/10/11に廃止されました。詳細はこちらです。

aws.amazon.com

 

SAP試験対策について

試験対策については、様々なサイトやBlogでいろいろと公開されているようでググればいっぱい出てくるので、ここでは取得までに実践した内容を簡単に記載しておきます。

  • 参考書:AWS認定ソリューションアーキテクト - アソシエイト
    • 残念ながらSAPの対策本はないのでSAA用を購入しました。本に掲載されている演習問題は、SAA用のためSAP問題集としてはあまり使えませんが、AWSの基本的な知識を広く浅く把握することができるので、全体を通して何回か(※最低でも2回くらいは)読み込むと良いです。個人的には黒本の方が内容が整理されててオススメですね。本の内容は少し古いものが含まれているので最新のAWSサービスの情報を別途チェックする必要があります。

      books.rakuten.co.jpbooks.rakuten.co.jp

  • 模擬試験(※有償:¥4000 yen)
    • AWS認定の模擬試験をオンラインで受けることができます。本試験と同じような画面レイアウト(時間制限なども本番に近い)で体験できるので、一度はやっておくと良いと思います。ちなみに、AWSでは、試験問題の流出をかなり厳密に管理しているため、試験後に模擬試験の問題を見返して復習することはできませんのでご注意を!
  • AWS WEB問題集で学習しよう(※有償)
    • オリジナルのAWS認定試験対策問題集を有償で公開しています。公式の問題集がないので、こちらを利用しました。無料だとSAP向けは7問しかなくて、たぶんそれだと足りないので、有償プランの利用が現実的かな。問題の解説もあるので単に解くだけでなく、疑問に思った点を理解するのにも役立ちます。AWSホワイトペーパーへのリンクも掲載してくれていたりするので、最新の情報へも比較的シームレスにアクセスして確認できます。

      aws.koiwaclub.com

  • AWS Black Belt Online Seminar
    • Youtubeに公開されているAWS公認のセミナ動画のうちメジャーどころのサービスは一通り目を通しました。個人的にSAP試験対策には、この動画を何度も見るのが一番効果的だったと思います。通勤の往復の電車の中で何度も何度も繰り返して視聴しました。分からないところは、AWS公式のホワイトペーパーを読むのがいいと思います。(※ホワイトペーパーの全てに目を通して頭に叩き込むのは事実上不可能だと思うので、、、)

      www.youtube.com

  • Udemy(※有償:¥9600 → 1400yen)
    • 300問(75×4set)のAWS認定SAPテスト問題と説明と参考資料です。ちょうど値下げしてたので購入してみました。が、英語の長文問題を翻訳しながら模擬試験するのが辛くて、購入したけど殆ど利用しませんでした。英語に抵抗がない人には良いかも。

      AWS Certified Solutions Architect Professional Practice Exam

  • その他
    • 地味に大事なのが受験会場ですね。受験会場によってだいぶ当日のストレスや疲労に差が出ると思います。個人的には歌舞伎座テストセンターをオススメします。また、受験会場以外だと、今年に入って認定ポリシーが変更(2019/2)になり、合格基準も変わっていたり(スコア範囲:100~1000でスコア750以上)していて、情報がまだ少ないので、最近受験した人に話を聞いてみると良いと思います。

 

今回のSAP受験は1回目、2回目ともに歌舞伎座テストセンターを選択したので、以前SAAを受験したときのような無駄なストレスや監視に煩わされることはありませんでした。SAAの時と違い、1回目、2回目ともに試験時間は結構キツキツでタイムマネジメントが重要になります。最後の「試験を終了する」ボタンをクリックする時のあの気持は相変わらずなんとも言えない感じ。今回、スコアは783でなんとかSAP試験に合格できました。 f:id:orinbou:20190812150755p:plain

お疲れさまでした。

 

AWSのDRシナリオが変わっていた件

DR(Disaster Recovery)のシナリオが少し変わっていたのでメモがてら更新

AWSのDR資料でコールドスタンバイがパイロットライトに変わっていました。

www.slideshare.net

【↓】変更点(コールドスタンバイ→パイロットライト)

  • AWS Black Belt Online Seminar AWSで実現するDisaster Recovery(2017年)

www.slideshare.net

両シナリオを考慮した番付けは下記のような感じでしょうか。

【可用性:高↑】

  • マルチサイト
  • ウォームスタンバイ
  • パイロットライト ←推奨(F/O時間:短)
  • コールドスタンバイ ←非推奨?(F/O時間:長)
  • バックアップ&リストア

【可用性:低↓】

コストの差が気になるところではありますが、クラウドサービスを有効活用することを考えると、今更コールドスタンバイを選択する理由がないってことなんでしょうね。

ちなみにAzureのDR資料でも分けて記載されていました。

Jenkins Xを触ってみた(前編)

少し時間が空いてしまいましたが、下記セミナーに参加してきてきました。

https://cloudbees.techmatrix.jp/wp-content/uploads/2019/05/jenkinsx_br2_20180628.png cloudbees.techmatrix.jp

せっかくなので、少し手を動かして Jenkins X を触ってみました。

Using the Google Cloud Shell

環境構築手順は下記の公式サイトを参考にしました。
https://jenkins-x.io/getting-started/create-cluster/#using-the-google-cloud-shell

Google Cloud Platform(GCP)を準備

まずはJenkinsXを動かすためGoogleクラウド環境を使えるようにします。
https://cloud.google.com/free/
GCP無料枠で12か月$300の無料クレジットで、あらゆるGCPプロダクトを試用することができます。

Google Cloud Shellへ接続する

GCPダッシュボードを表示し、初期表示プロジェクト(My First Project)画面右上のCloud Shellボタンを押してWebコンソールを表示します。

f:id:orinbou:20190716035315p:plain

あと、GKEでよく使うのは下記の画面ですね。

JenkinsXをインストールする

Google Cloud ShellのWebコンソールで下記コマンドを実行します。

gcp_user@cloudshell:~ (analog-campus-245615)$ curl -L https://github.com/jenkins-x/jx/releases/download/v2.0.413/jx-linux-amd64.tar.gz | tar xzv
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   612    0   612    0     0    717      0 --:--:-- --:--:-- --:--:--   717
  0     0    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0LICENSE
README.md
changelog.md
jx
100 63.5M  100 63.5M    0     0  7725k      0  0:00:08  0:00:08 --:--:-- 11.5M

gcp_user@cloudshell:~ (analog-campus-245615)$ sudo mv jx /usr/local/bin

Google Cloud Shell は無料で利用できますが home ディレクトリ配下以外は永続化されないため注意してください(つまり本項でインストールした jx は永続化されません)

新規k8sクラスタを作成する

Google Cloud ShellのWebコンソールで下記コマンドを実行します。

gcp_user@cloudshell:~ (analog-campus-245615)$ jx create cluster gke --skip-login
Using the only Google Cloud Project analog-campus-245615 to create the cluster
Updated property [core/project].
? No cluster name provided so using a generated one: armmotley
? Defaulting to cluster type: Zonal
? Google Cloud Zone: asia-northeast1-a
? Defaulting to machine type: n1-standard-2
? Defaulting to minimum number of nodes: 3
? Defaulting to maxiumum number of nodes: 5
? Defaulting use of preemptible VMs: No
? Defaulting access to Google Cloud Storage / Google Container Registry: Yes
? Defaulting enabling Cloud Build, Container Registry & Container Analysis API's: Yes
? Defaulting enabling Kaniko for building container images: No
Creating cluster...
WARNING: In June 2019, node auto-upgrade will be enabled by default for newly created clusters and node pools. To disable it, use the `--no-enable-autoupgrade` flag.
WARNING: Starting in 1.12, new clusters will have basic authentication disabled by default. Basic authentication can be enabled (or disabled) manually using the `--[no-]enable-basic-auth` flag.
WARNING: Starting in 1.12, new clusters will not have a client certificate issued. You can manually enable (or disable) the issuance of the client certificate using the `--[no-]issue-client-certificate` flag.
WARNING: Starting in 1.12, default node pools in new clusters will have their legacy Compute Engine instance metadata endpoints disabled by default. To create a cluster with legacy instance metadata endpoints disabled in the default node pool, run `clusters create` with the flag `--metadata disable-legacy-endpoints=true`.
WARNING: The Pod address range limits the maximum size of the cluster. Please refer to https://cloud.google.com/kubernetes-engine/docs/how-to/flexible-pod-cidr to learn how to optimize IP address allocation.
This will enable the autorepair feature for nodes. Please see https://cloud.google.com/kubernetes-engine/docs/node-auto-repair for more information on node autorepairs.
Creating cluster armmotley in asia-northeast1-a...
..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................done.
Created [https://container.googleapis.com/v1/projects/analog-campus-245615/zones/asia-northeast1-a/clusters/armmotley].
To inspect the contents of your cluster, go to: https://console.cloud.google.com/kubernetes/workload_/gcloud/asia-northeast1-a/armmotley?project=analog-campus-245615
kubeconfig entry generated for armmotley.
NAME       LOCATION           MASTER_VERSION  MASTER_IP       MACHINE_TYPE   NODE_VERSION   NUM_NODES  STATUS
armmotley  asia-northeast1-a  1.12.8-gke.10   35.190.231.169  n1-standard-2  1.12.8-gke.10  3          RUNNING
Initialising cluster ...
? Select Jenkins installation type: Static Jenkins Server and Jenkinsfiles
Namespace jx created
Context "gke_analog-campus-245615_asia-northeast1-a_armmotley" modified.
Setting the docker registry organisation to analog-campus-245615 in the TeamSettings
Git configured for user: orinbou and email sarubobo.com@gmail.com
helm installed and configured
? No existing ingress controller found in the kube-system namespace, installing one: Yes
WARNING: failed to create system vault in namespace jx due to no "jx-vault-armmotley" vault found in namespace "jx"

Note: this loadbalancer will fail to be provisioned if you have insufficient quotas, this can happen easily on a GKE free account.
To view quotas run: gcloud compute project-info describe
Waiting for external loadbalancer to be created and update the nginx-ingress-controller service in kube-system namespace
External loadbalancer created

Waiting to find the external host name of the ingress controller Service in namespace kube-system with name jxing-nginx-ingress-controller
You can now configure a wildcard DNS pointing to the new Load Balancer address XXX.XXX.XXX.XXX
If you don't have a wildcard DNS setup then create a DNS (A) record and point it at: XXX.XXX.XXX.XXX, then use the DNS domain in the next input...

If you do not have a custom domain setup yet, Ingress rules will be set for magic DNS nip.io.
Once you have a custom domain ready, you can update with the command jx upgrade ingress --cluster
? Domain XXX.XXX.XXX.XXX.nip.io
nginx ingress controller installed and configured
? Default enabling long term logs storage: Yes
No bucket name provided for long term storage, creating a new one
The bucket gs://armmotley-lts-b31446e8-4216-4864-afc5-2d295030f503 does not exist so lets create it

Set up a Git username and API token to be able to perform CI/CD
? Do you wish to use orinbou as the local Git user for GitHub server: Yes
Select the CI/CD pipelines Git server and user
? Do you wish to use GitHub as the pipelines Git server: Yes
Setting the pipelines Git server https://github.com and user name orinbou.
Cloning the Jenkins X cloud environments repo to /home/sarubobo_com/.jx/cloud-environments
? A local Jenkins X cloud environments repository already exists, recreating with latest: Yes
Cloning the Jenkins X cloud environments repo to /home/sarubobo_com/.jx/cloud-environments
Enumerating objects: 1436, done.
Total 1436 (delta 0), reused 0 (delta 0), pack-reused 1436
? Defaulting workload build pack: Kubernetes Workloads: Automated CI+CD with GitOps Promotion
Setting the team build pack to kubernetes-workloads repo: https://github.com/jenkins-x-buildpacks/jenkins-x-kubernetes.git ref: master
Installing jx into namespace jx
Installing jenkins-x-platform version: 2.0.822

WARNING: waiting for install to be ready, if this is the first time then it will take a while to download images
Jenkins X deployments ready in namespace jx
Configuring the TeamSettings for ImportMode Jenkinsfile
Configure Jenkins API Token
Generating the API token...
Logged in admin to Jenkins server at http://jenkins.jx.XXX.XXX.XXX.XXX.nip.io via legacy security realm
Enable CSRF protection at: http://jenkins.jx.XXX.XXX.XXX.XXX.nip.io/configureSecurity/
Created user admin API Token for Jenkins server jenkins.jx.XXX.XXX.XXX.XXX.nip.io at http://jenkins.jx.XXX.XXX.XXX.XXX.nip.io
Updating Jenkins with new external URL details http://jenkins.jx.XXX.XXX.XXX.XXX.nip.io
Creating default staging and production environments
? Select the organization where you want to create the environment repository: orinbou
Using Git provider GitHub at https://github.com
Creating repository orinbou/environment-armmotley-staging
Creating Git repository orinbou/environment-armmotley-staging
Pushed Git repository to https://github.com/orinbou/environment-armmotley-staging

Creating staging Environment in namespace jx
Created environment staging
Namespace jx-staging created
Created Jenkins Project: http://jenkins.jx.XXX.XXX.XXX.XXX.nip.io/job/orinbou/job/environment-armmotley-staging/

Note that your first pipeline may take a few minutes to start while the necessary images get downloaded!

Creating GitHub webhook for orinbou/environment-armmotley-staging for url http://jenkins.jx.XXX.XXX.XXX.XXX.nip.io/github-webhook/
Using Git provider GitHub at https://github.com
Creating repository orinbou/environment-armmotley-production
Creating Git repository orinbou/environment-armmotley-production
Pushed Git repository to https://github.com/orinbou/environment-armmotley-production

Creating production Environment in namespace jx
Created environment production
Namespace jx-production created
Created Jenkins Project: http://jenkins.jx.XXX.XXX.XXX.XXX.nip.io/job/orinbou/job/environment-armmotley-production/

Note that your first pipeline may take a few minutes to start while the necessary images get downloaded!

Creating GitHub webhook for orinbou/environment-armmotley-production for url http://jenkins.jx.XXX.XXX.XXX.XXX.nip.io/github-webhook/

Jenkins X installation completed successfully


        ********************************************************

             NOTE: Your admin password is: XXXXXXXXXXXXXXXXXXXX

        ********************************************************


Your Kubernetes context is now set to the namespace: jx
To switch back to your original namespace use: jx namespace default
Or to use this context/namespace in just one terminal use: jx shell
For help on switching contexts see: https://jenkins-x.io/developing/kube-context/
To import existing projects into Jenkins:       jx import
To create a new Spring Boot microservice:       jx create spring -d web -d actuator
To create a new microservice from a quickstart: jx create quickstart
Fetching cluster endpoint and auth data.
kubeconfig entry generated for armmotley.
Context "gke_analog-campus-245615_asia-northeast1-a_armmotley" modified.
NAME              HOSTS                                      ADDRESS          PORTS   AGE
chartmuseum       chartmuseum.jx.XXX.XXX.XXX.XXX.nip.io       XXX.XXX.XXX.XXX   80      3m13s
docker-registry   docker-registry.jx.XXX.XXX.XXX.XXX.nip.io   XXX.XXX.XXX.XXX   80      3m13s
jenkins           jenkins.jx.XXX.XXX.XXX.XXX.nip.io           XXX.XXX.XXX.XXX   80      3m13s
nexus             nexus.jx.XXX.XXX.XXX.XXX.nip.io             XXX.XXX.XXX.XXX   80      3m13s

セットアップ完了したJenkinsX環境

GCPKubernetes クラスタ画面でクラスタを確認できます。

f:id:orinbou:20190716035715p:plain

セットアップが完了した環境へは下記のようなURLでWebブラウザからアクセスできます。

名前 URL
chartmuseum http://chartmuseum.jx.XXX.XXX.XXX.XXX.nip.io/
docker-registry http://docker-registry.jx.XXX.XXX.XXX.XXX.nip.io/
jenkins http://jenkins.jx.XXX.XXX.XXX.XXX.nip.io/
nexus http://nexus.jx.XXX.XXX.XXX.XXX.nip.io/

※ID/PWは、セットアップ時に表示されたもの(admin/XXXXXXXXXXXXXXXXXXXX)を使用します。

また、GitHubに新規リポジトリが作成されていることが確認できます。

新規プロジェクトを作成する(quickstart:spring boot)

Google Cloud ShellのWebコンソールで下記コマンドを実行します。

gcp_user@cloudshell:~ (analog-campus-245615)$ jx create quickstart
Using Git provider GitHub at https://github.com
? Do you wish to use orinbou as the Git user name? Yes
? Which organisation do you want to use? orinbou
? Enter the new repository name:  jx-create-quickstart-sample
Creating repository orinbou/jx-create-quickstart-sample
? select the quickstart you wish to create spring-boot-http-gradle
Generated quickstart at /home/sarubobo_com/jx-create-quickstart-sample
### NO charts folder /home/sarubobo_com/jx-create-quickstart-sample/charts/spring-boot-http-gradle
Created project at /home/sarubobo_com/jx-create-quickstart-sample
The directory /home/sarubobo_com/jx-create-quickstart-sample is not yet using git
? Would you like to initialise git now? Yes
? Commit message:  Initial import

Git repository created
selected pack: /home/sarubobo_com/.jx/draft/packs/github.com/jenkins-x-buildpacks/jenkins-x-kubernetes/packs/gradle
replacing placeholders in directory /home/sarubobo_com/jx-create-quickstart-sample
app name: jx-create-quickstart-sample, git server: github.com, org: orinbou, Docker registry org: analog-campus-245615
skipping directory "/home/sarubobo_com/jx-create-quickstart-sample/.git"
Pushed Git repository to https://github.com/orinbou/jx-create-quickstart-sample
Created Jenkins Project: http://jenkins.jx.XXX.XXX.XXX.XXX.nip.io/job/orinbou/job/jx-create-quickstart-sample/

Watch pipeline activity via:    jx get activity -f jx-create-quickstart-sample -w
Browse the pipeline log via:    jx get build logs orinbou/jx-create-quickstart-sample/master
You can list the pipelines via: jx get pipelines
When the pipeline is complete:  jx get applications

For more help on available commands see: https://jenkins-x.io/developing/browsing/

Note that your first pipeline may take a few minutes to start while the necessary images get downloaded!

Creating GitHub webhook for orinbou/jx-create-quickstart-sample for url http://jenkins.jx.XXX.XXX.XXX.XXX.nip.io/github-webhook/

GitHubに新規リポジトリが作成されていることが確認できます。
https://github.com/orinbou/jx-create-quickstart-sample

あとは、上記リポジトリをローカルPCに clone して、masterブランチへpushもしくはpull requestによるマージが発生するとWebhookイベントにより自動的にGCP環境のJenkinsでビルドされデプロイまで自動的に実行されます。自動ビルド&デプロイはデフォルトでmasterブランチに対してのアクションのみです。驚いたのは、masterブランチへpull requestを出した際、pull requestの動作確認用のワークロード(例:jx-orinbou-jx-create-quickstart-sample-pr-1)が起動してすぐに動作確認できるようになっていた点です。とても便利です。

ちょっと残念だったのがpull requestをmasterへマージして動作確認用のGCPワークロードが不要になっても自動で削除してくれないところですね。GCP画面からいちいち選択して削除するのはダサいし、ヘビーに使う場合は管理が煩雑になりそう。不要ワークロードへの課金も心配です。

今回はJenkins installation typeを「Static Jenkins Server and Jenkinsfiles」にしましたが、次は「Serverless Jenkins X Pipelines with Tekton」にして試してみたいと思います。 下記URLに記載されている情報によると、Serverless Jenkins X Pipelines の方は、GitHub画面でBotと対話しながらより便利にGitOpsオペレーションができるっぽいので楽しみです。

上記URLのプロモーションを見ると、今回残念に感じた不要ワークロードの削除なんかもGitHubの画面からBotにやってもらえそう。

https://jenkins.io/images/jenkins-x-logo.png

参考

xAsCodeとxOpsについてまとめてみる

どんどん新しいのが出てきて良く分からなくなってきたので、とりあえず調べた情報をまとめておく。

xAsCode(xxx as Code / xxx-as-Code)

キーワード スコープ 参考
Everything as Code 全て info
Infrastructure as Code インフラ info
Security as Code セキュリティ info
Compliance as Code 法令遵(順)守 info
Database as Code データベース info
Pipelines as Code CI/CD info
Pipeline as Code CI/CD info
Operations as Code 運用 info
Operation as Code 運用 info
Observability as Code 運用監視 info

xOps

キーワード スコープ 参考
xOps 全て info
DevOps 【開発】+【運用】 info
DevSecOps 【開発】+【セキュリティ】+【運用】 info
BizDevOps 【ビジネス】+【開発】+【セキュリティ】+【運用】 info
BizDevSecOps 【ビジネス】+【ネットワーク】+【セキュリティ】+【運用】 info
SecOps 【セキュリティ】+【運用】 info
NetOps 【ネットワーク】+【運用】 info
NetSecOps 【ネットワーク】+【セキュリティ】+【運用】 info
DataOps 【データ】+【運用】 info
ArchOps 【アーキテクト】+【運用】 info
GitOps 【Git(Everything as Code)】+【運用】 info
WinOps Windows】+【運用】 info
AIOps 人工知能】+【運用】 info

とりあえず、最近よく目にするものをまとめてみたけど、ここに記載したもの以外にもたくさんあるし、日々新しい言葉や定義が生まれているので気が向いたらまた更新します。

※補足

個人的には「Build as Code」がなかったのが意外でした。「Pipeline(s) as Code」に含まれるんだろうけど。

[2019/5/21(火)]JAWS-UG横浜 #16 DevOps へ参加してきました

先月に続きJAWS-UGイベントに参加してきました。

今回参加させてもらったJAWS-UGイベントは下記です。

jawsug-yokohama.connpass.com

https://s3-ap-northeast-1.amazonaws.com/img.jawsug-yokohama.connpass.com/jawsug_yokohama3.jpg

前回と同様に講演を聞きながら自分用メモとして書き留めた内容なので、意味不明な点もありますが、ご容赦ください。

プレゼン内容(とメモ)

会場は横浜の馬車道駅側のアトラシアンさんです。今回のテーマは DevOps でした。

入場時にビールを渡されて、乾杯で開会する勉強会は初めてだったので少し驚きましたw

発表者 内容(とメモ)
アトラシアン 皆川さん
DevOpsとITSMはマブダチになれるか??

f:id:orinbou:20190521191900j:plain

ITサービス管理(ITSM)
AtlassianSummit2019の話
2008 Agile Infrastructureがルーツ
ITIL資格保有者は年配者が多し
変更:トランクベースの開発?
ITIL3まではフットワークが重い
ITIL4はルールよりPFを重視する
→よりAgile的な考えになってきた
→原則がAgile宣言に酷似
DevOps3つの道(原則)
DevOpsは自動化そのものではない!
天文学が望遠鏡そのものではないように(※目的と手段のはなし)
JBアドテク 新居田さん
CircleCIとEKSによるCI/CD環境
3つの視点(人:文化、プロセス、ツール)
circleCIは同じこと何度もやらない仕組(context)
Orbs:CircleCIの定義をまとめたパッケージ
GitOps:k8の状態=Gitの状態
kubediff
kubectl apply -f ./ -R
tfnortify:Terraformフォーム結果を良感じで通知するOSS

CircleCIとEKSをはじめよう!(終了メッセージ)

f:id:orinbou:20190521192713j:plain

F-Secure 河野さん
DevSecOps と Cloud Security
~継続的な脆弱性診断とセキュリティ運用・監視のベストプラクティス~
4種類Scan統合(読み方:レーダー)
CentOS(セントス)
IDS(internetDiscoveryScan)
海外事例:50000インスタンス、10000診断/週
→継続的なセキュリティ診断とパッチ適用
API連携による継続的な脆弱性診断(エージェントレス)
f:id:orinbou:20190521193447j:plain
アクロ 石田さん
AWS Amplify Consoleを使うと
本当に幸せになれるか?
↓(※タイトル変更)
開発者がCI/CDを通して幸せになれるか?
開発プロセススクラムです。
静的ページのUpならお手軽(微妙)
→圧倒的なCD感。無理ゲー(※やる気はある)
やれそうな感覚を持たせる(心理的安全)
一本通ってるサンプルがある(超重要)
→ワンパス・サンプルだいじ
SPAサンプル(Amplify Consoleでビルドできる)
f:id:orinbou:20190521200147j:plain
* フロントエンドのシナリオテストはKarate
* バックエンドのテストはPythonのunittest
→不安を取り除く。長期的な文化の醸造
→CI/CDでhappyDevelopment
タグバン 佐々木さん
佐々木さんとこのDevOps

f:id:orinbou:20190521201033j:plain

Springの人、主なデプロイ先はAWSJAWS横浜初登壇
Jira→BitBucketリポジトリ作成→SonarQube→Bamboo(ビルドツール)→Beanstalk
ログを監視し、例外発生時にJiraにタスクを自動生成する
AWS SAMで利用者を管理、CWL?
DLQ(デッドレターキュー)ソース設定をする
クラメソ 大栗さん
AWSのプロDevOpserへの道

f:id:orinbou:20190521201724j:plain

みらい翻訳(Google翻訳より精度が高いらしい)
試験に合格したかったら、(WP全部は長いから無理)
DevOps系サービスのチュートリアルは全部読め!
試験対策は何を問われているのかちゃんと見極める。

f:id:orinbou:20190521202906j:plain

必要十分条件でOK。過剰はNG。

サイダス 小深田さん
AWS認定DevOpsエンジニア・プロに体当たりチャレンジしてきた!

speakerdeck.com

DevOpsエンジニア・プロフェッショナル本日受験
750/1000が合格ライン目安、今年2月に問題が改定された
やったこと:模擬試験40$で20問、Udemy(英語)、AWSレーニングSample
f:id:orinbou:20190521204531j:plain
新サービスの概要も出題されるので注意(メイシー、ラムダエッジ、ドューティーなど)
→本日は残念ながら不合格だったが手応えはあった!
※参考:試験会場は歌舞伎座がお勧め
Nソリュ社 好光さん
PF-SIの現場でクラウドネイティブなDevOpsを進めるためのあれこれ

f:id:orinbou:20190521205141j:plain

エンジニアのパフォーマンスを最大化させてビジネスニーズに迅速に答えるための活動(なんでもアリ)
DevOps化大作戦#1~5
1:トップダウン(偉い人に頼る)立上はスムーズ
2:ボトムアップ(現場で頑張る系)マスク面倒、手間重
3:ツール活用(AWSマネジドツール、OSS活用)
4:テンプレ・ガイドの整理(最近化メンテが必須)
5:事前体験ハンズオン教育プログラム
カルチャ、ツール・プロセス、人材
→DevOpsレディにする
※5/24(金)SecJAWS13回@トレンドマイクロ(ほぼ満席)
Michael H. Oshitaさん(I am devops)
My DevOps toolsets

speakerdeck.com

f:id:orinbou:20190521210158j:plain

Terraform(Infrastructure as Code)
teraform workspace list
default
production
* staging
みたいな感じのコマンド。。。
モジュール化して、共通化部分を作成。環境は変数化する
→DRYな感じでインフラ・コードを書ける
f:id:orinbou:20190521210439j:plain
秘密情報はSSMで管理する。
CircleCI(他のツールは見にくいのでこれを使用)
【例】:CircleCI→Terraform(成功/失敗の通知)
ECSサービスの待ち時間が長いのでStep Fncsを使っている
サイダス 吉田さん
サーバーレス x DevOps

f:id:orinbou:20190521211725j:plain

役割が変化していく中で、DevとOpsをデカップル(連動)してチャレンジしていく

f:id:orinbou:20190521212046j:plain
※常時コアメンバを募集中だそうです。

今回は会場を提供してくれたアトラシアンさんTシャツをいただきました!

JAWS横浜さん、アトラシアンさん、皆様どうもありがとうございました。

また、F-Secureさん差し入れのドリンク(ビール&お茶)ご馳走様でした。

イベント後の懇親会では、新しい出会いもありました。是非また参加させてください。

f:id:orinbou:20190525235837j:plain

【補足】本ブログ内で参照しているスライドは下記URLで公開されているものです。

 https://jawsug-yokohama.connpass.com/event/125095/presentation/

 

[2019/4/20(土)]JAWS-UG さいたま支部 第11回勉強会〜re:Invent 2018 re:Cap & AWSフリープレゼン〜へ参加してきました

以前から参加してみたかったJAWS-UGイベントに参加してきました。思えば、数年前「JAWS-UG 中央線」にエントリしてみたものの、仕事の都合で参加できませんできした。結局JAWS-UGへの参加はそれっきりしないままになっていたのですが、数年越しのリベンジ参加となりました。

今回参加させてもらったJAWS-UGイベントは下記です。

jawsug-saitama.doorkeeper.jp

最初、このイベントを薦めれられた時、正直「え!さいたま。遠っ…」って思ったのですが、今回は初の都内開催とのことでした。場所は大崎駅から歩いてすぐのコムチュアさんの会議室で開催されました。

 

以下コンテンツですが、講演聞きながら自分用メモとして書き留めた内容ほぼそのままなので、イミフな点も多々ありますが、何卒ご容赦ください。

 

プレゼン内容(のメモ)

今回のテーマは
re:Invent 2018 re:Cap & AWSフリーテーマとのことでした。

f:id:orinbou:20190423020439p:plain

発表者 テーマ 内容(ざっくりメモ)
浅野さん AWS AWSアップデート情報と活用例(仮)

# JAWS-UGさいたま支部について

* さいたま支部は、初心者向けとして結成された。
(つまり初心者もWelcome!ってことかな?
# 気になる最近のアップデート
JavaSE標準を満たすと認定されているCorrettoがGAになった。(Java8,11)
AWS Backup(EC2静止点を見ないので注意)※東京まだ!
* WorkLink(セキュアなモバイルアプリ接続アクセス)※東京まだ!
* 格安Glacier Deep Archive Storage Classが全リージョンで使える
* QuickSight ML Insight(MLベースの解析、分析)
* サービスメッシュを実現するAppMesh(コンテナ系)※東京OK!
* RDS Performance Insight(対応DB種類が増えた)
* Neptune, M5a, FSx for Lustre/Windows File Srv東京OK!
* Amplify Console, Cloud9 ※4月に東京でも使えるようになる!
* その他(NLB、ALBパワーUp、DCGWマルチアカ、GluePython) 
# 事例紹介
* スマート宅配ポスト(IoT系マイクロサービス)※よくできてる
* 住信SBIでAuroraポスグレ10採用でランニングコスト83%ダウン
* ググりキーワード「AWS 資料」
古渡さん   KMSについて考えてみよう

コンテナを使って開発してみた話
# ゲーム会社でSNSアプリ開発でコンテナを使おうとした件
* DockerでAuroraに似せた開発環境構築(Read:endppint, Write:endppintを分ける)が大変
* Amazon ECRにベースとなるイメージを置く
* コンテナ利用はキャッシュ制御をうまく使わないと処理時間がかかる
* B/Gデプロイはやめて、時系列の名前でやらないと混乱して辛い(特に週末リリースした後の月曜の朝)
* インフラ構築はterraformを使ったが、今はCloudFormationがオススメ
 日本ユニシス 会澤さん  AWSkubernetesことはじめ
# 自社サービスビジネス立ち上げ支援が生業
* Ops-JAWSにぜひご参加ください(今年まだ未開催。都内運営募集)
* クーベネティス→Kubernetes(クーベルネイテス) 読み方いろいろWP
* Docker composeが便利
* 様々なコンテナオーケストレーション→勝者Kubernetes(デファスタ)
* kubectl(キューブコントロール?)コマンドで操作
* ECS / EKS(コントロールプレーン、データプレーン)
* ECS:AWSデータプレーン(EC2、Fargate)
* EKS:AWSデータプレーン(EC2のみ、Fargateまだ)
* どっちを使えばいいのか?(別途議論したい)
* EKSの特徴(VPC統合、IAM認証:aws-iam-authenticator)
* AWSクラスタGCPやAzureと違って起動中ずっと課金されてしまう(割高感が半端ない)
渥美さん

AWSフリーテーマ 

世界でたぶん最も遅いre:Invent 2018 reCap

~きっと後世まで語られる味わい深い新サービス

日本のデジタル国家戦略はクラウドが支える

~2019 政府CIO補佐官がすごいことになっている

f:id:orinbou:20190423013943j:plain# re:invent 2018 ふりかえり
* re:invent 2012 の衝撃(顧客の「ITの不自由」を、毎年、着実に解決)
* 2018年(キーワード:Developer→Builder)
* 個人着目新サービス1(Ground Station)※人工衛星を管理する地上局のマネージド・サービス←今後、航空宇宙ビジネスは民間が中心になる
* 個人着目新サービス2(Inferentia)機械学習の推論チップ
Amazonが、世界のITを牽引したチップ開発社になった。
* 個人着目新サービス3(QLDB)フルマネージドな元帳DB
ブロックチェーンで使用するような改竄不可DB
* 個人着目新サービス4(DeepRacer)強化学習のためのRCカー
→子供向けのおもちゃではない。深層学習エンジニアの為のマジ教材 。日本に40, 50台(※内20台がクラメソ)
* Amazon GOでのかつてない購買体験(アプリ利用でキャッシュレス)
* 2019年政府CIO補佐官がすごい(クラウド・バイ・デフォルト)
→いよいよクラウドが日本の国策になる!

(6月の国会で法律が変わる)

* IT担当大臣:平井拓也(AWSサミット2017登壇者)
→助人:元MS砂金(いさご)、元MSエバ鈴木章太郎、元SN銀大久保光伸
→国家創造戦略(日本国策)←デジタル3原則←クラウド
* Amazon配送センターのオートメーションは実は三菱電機
f:id:orinbou:20190423015240j:plain
※個人的には、この日イチ盛り上がりだったセッション。スピーカーの情熱が皆にも伝わっていた気がします。

深堀さん 

 AWS EC2/AutoScalingGroupについて
# オートスケーリングを使おう!
* リザーブインスタンス買うのメンドイ(見積もり、稟議も。。)
→技術でコストダウンできる
* 日常の安定運用における負荷を下げたい(耐障害性も上げたい)
→オートスケーリングを活用(フィジカル、メンタルな負担を低減)
* スパイクに備えた暖気申請(Pre-Warming)ができる(知らんかた)
* RDSのリーダーのオートスケーリングのメリットは何だっけ?
* 今時のスポットインスタンス(何か怖い。突然止まるんじゃない?)
→だいぶ改善されているので、本番で活用していきたい(らしい)
* ヘルスチェックが死亡判定(負のループ)
→ビルド&デプロイに失敗しEC2がどんどん減っていく(異常系重要)
* まとめ(新規はオートスケーリング積極活用。手を動かして慣れる)
 

乾杯!〜懇親会〜

re:Invent 2018 お土産プレゼント 

f:id:orinbou:20190423011711j:plain

JAWSでお土産たくさんいただきました!この他に(nginxの)Tシャツなども。ビアバッシュも楽しかったし、至れり尽くせりの会でした。JAWSさいたまさん、コムチュアさん、渥美さん、皆様どうもありがとうございました。

 

都内で開催の折は、是非また参加させてください。

さいたま開催の折は、、、考えときます(汗