SlideShare a Scribd company logo
1 of 56
CaaSワークショップ
@NTTコム SW研修
2019/04/16
知ってますか?
出典:https://www.slideshare.net/BruceWong3/the-case-for-chaos
agenda
• 講義:マイクロサービス、仮想化、コンテナ、Docker
• ハンズオン(演習):Dockerで簡易アプリを立ててみる
• ハンズオン(課題):Dockerで課題アプリを立てる
• 講義:kubernetes、GKE
• ハンズオン(演習):GKEで課題アプリを立てる
• ハンズオン(課題):GKEの課題アプリを改良する
CaaSの位置づけ
マイクロサービスとは
• 複数の独立した機能を組み合わせることで、一つの処理を実現
するアーキテクチャ
• 機能ごとに独立した
アプリケーションに分割
• 各サービスは単一の目的を持つ
• 分散システム、サービス間は疎結合、軽量なAPIなどでやり取り
出典:https://codezine.jp/article/detail/11055
マイクロサービスとは
• メリット
• スケーリングの効率化
• 耐障害性
• デプロイの容易性
• 新技術を取り込みやすさ
• デメリット
• 設計/実装の高難度化
• パフォーマンス
• データの一貫性(トランザクション)
• 運用管理の負荷
出典:https://www.idcf.jp/words/scale-out.html
仮想化技術とは
• 1台の物理的コンピュータの上で、複数の仮想的なコンピュー
タを実行させる技術
ホスト型 ハイパーバイザー型 コンテナ型
出典:https://qiita.com/supaiku2452/items/8b06b774c0e2fce7df92
仮想化技術とは
• ホスト型
• ホストOSの上に、仮想化を立ち上げるための専用ソフトウェアを導入し、その上で
仮想環境を実行
• メリット
• ソフトウェアの導入〜仮想環境の構築までの手順が簡単
• デメリット
• ゲストOSの起動に時間がかかる
• ゲストOS→仮想化されたハードウェア→ホストOS→実ハードウェアの順序で
ハードウェアにアクセスするため、オーバーヘッドがかかる
• 例
• VMware Player、VirtualBox
仮想化技術とは
• ハイパーバイザー型
• 物理的なハードウェアの上に仮想化を実現するための専用の領域を作り、その上で
仮想環境を実行
• メリット
• オーバーヘッドが小さい(直接ハードウェアを操作できるため)
• デメリット
• ホスト型に比べ、手軽に仮想環境を作れない
• 専用ハードウェアやソフトウェアが必要
• 例
• VMware vSphere Hypervisor、Hyper-V、KVM
仮想化技術とは
• コンテナ型
• ホストOS上にコンテナ専用の領域を作り、その上でアプリケーションを実行
• メリット
• ゲストOSの起動を必要としないため、アプリケーションの起動が早い
• 環境構築や環境のコピーが簡単
• 省スペース(メモリ、ディスク)で実行でき、コストパフォーマンスが良い
• デメリット
• ホストのカーネルに依存するため、コンテナごとで異なるカーネルを利用できない
• Windows と Linuxのような関係
• 例
• Docker、Linux Container
コンテナの特長
1. 容易なイメージ化と再現性
2. 軽量なイメージ
3. 高速な起動と停止
コンテナの特長
1. 容易なイメージ化と再現性
• アプリケーションと実行環境のイメージ化
• 再現性の高い環境
• アプリケーションのビルドもコンテナイメージのビルド時に実施
• いかなる環境でも同等の動作が保証される
コンテナの特長
2. 軽量なイメージ
• VMイメージと比べて軽量
• 単一プロセスのみを稼働させるため、軽量OSの選定もしやすい
コンテナの特長
3. 高速な起動と停止
• 仮想マシンの起動と停止より高速
• コンテナの起動と停止はプロセスの起動と停止相当
• 高速なスケールアウトや障害時の復旧が可能
Dockerとは
• コンテナ環境を管理するためのプラットフォーム
✔Dockerイメージを作成(build)
• アプリケーションを動かすために必要な、コード/ライブラリ/ミドルウェア/OS
などをひとまとめにしたものをDockerイメージとして作成する。
• Dockerイメージは、Dockerfile(定義ファイル)から作成する。
✔Dockerイメージを共有(ship)
• Dockerレジストリ(Docker Hub)を利用し、イメージを管理する。
• Docker Hubでは、イメージのアップロードやダウンロード、検索などが行える。
✔Dockerコンテナを実行(run)
• Dockerイメージをビルドし、コンテナとして実行する。
• コンテナは、開始/停止/削除が行える。
Dockerとは
• Dockerfileの書式
http://docs.docker.jp/engine/reference/builder.html
命令名 説明
FROM ベースイメージを指定
RUN コマンドを実行し、結果をコミットする
COPY ローカルファイルをコンテナ上にコピー
WORKDIR 命令実行時の作業ディレクトリを指定
ENV 環境変数を設定
ENTRYPOINT コンテナ起動時に実行されるコマンド
とりあえず作ってみましょう
ハンズオン(演習):HTTPサーバ構築
事前にgitから資材をcloneしておく
$ cd sample/
$ $ ls
Dockerfile README.md
$ view Dockerfile
$ sudo docker build ./ -t apache:1.0
Sending build context to Docker daemon 3.584 kB
…
Successfully built d7b1249a1f7a
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
apache 1.0 d7b1249a1f7a 46 seconds ago 10.4 MB
docker.io/alpine latest cdf98d1859c1 2 days ago 5.53 MB
$ sudo docker run --name apache -itd -p 80:80 apache:1.0
43f05757a453a02d5fab265036536d5aeafd865a5df68646bf3accdd27a7fc79
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
43f05757a453 apache:1.0 "/bin/sh -c 'httpd..." 16 seconds ago Up 15 seconds 0.0.0.0:80->80/tcp apache
$ curl localhost
<html><body><h1>It works!</h1></body></html>
ハンズオン(課題):課題アプリを
Dockerで実装
• 昨日作ったアプリをコンテナで実装してください
• 資材は app/ にあるので、Dockerfileを記述してください
• backend、MySQLそれぞれをimage化しましょう
● localhostの9200番ポートでタスク管理APIが叩ければOK
$ curl localhost:9200/tasks
[]
ハンズオン(課題):課題アプリを
Dockerで実装
• 構成図
Backend
IP:BACKEND_IP MySQL
IP:MYSQL_IP
MYSQL_IP :3306BACKEND_IP:9200
ハンズオン(課題):課題アプリを
Dockerで実装
上手く起動しないときは以下の手順で調査
# log確認
sudo docker logs [container_id]
# ssh(attach)
sudo docker exec -it [container_id] /bin/sh
$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ef275c2307c7 backend:1.0 "/bin/sh -c 'pytho..." 19 minutes ago Up 19 minutes 0.0.0.0:9200->9200/tcp backend
ccd5757a7f77 mysql:1.0 "docker-entrypoint..." 22 minutes ago Up 22 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp mysql
2a21351f765f apache:1.0 "/bin/sh -c 'httpd..." 26 minutes ago Up 26 minutes 0.0.0.0:80->80/tcp apache
$ sudo docker logs ef275c2307c7
* Serving Flask app "run" (lazy loading)
…
172.17.0.1 - - [15/Apr/2019 12:11:37] "GET /tasks HTTP/1.1" 200 -
$ sudo docker exec -it ef275c2307c7 /bin/sh
# hostname
ef275c2307c7
ハンズオン(課題):課題アプリを
Dockerで実装
MySQL イメージを作成、起動
/work/app/mysql/prepare.sqlを起動後に読み込む
Backendイメージを作成、起動
$MYSQL_IPという環境変数にMySQLのIP(ホストVMのIP)を指定する
python等の必要ライブラリ・ミドルウェアをインストール
ハンズオン(課題):課題アプリを
Dockerで実装
ホストVMのIP取得方法
$ ip route
default via 10.146.0.1 dev eth0 proto dhcp metric 100
10.146.0.1 dev eth0 proto dhcp scope link metric 100
10.146.0.49 dev eth0 proto kernel scope link src 10.146.0.49 metric 100
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
$ export HOST_IP=`ip route | grep docker | awk '{print $9}'`
$ echo $HOST_IP
172.17.0.1
ハンズオン終了・答え合わせ
GCEで作業用サーバを構築する
(事前にやっておくかも)
GCEにSSHする
ホームディレクトリで
$ cd app/mysql/
$ view Dockerfile
$ sudo docker build ./ -t mysql:1.0
Sending build context to Docker daemon 8.192 kB
…
Successfully built e34c079ee87a
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 1.0 e34c079ee87a 42 seconds ago 372 MB
docker.io/mysql 5.7 98455b9624a9 2 weeks ago 372 MB
$ sudo docker run --name mysql -itd -p 3306:3306 mysql:1.0
1ce14b24bba7d2328ccbbc3a18f7bb2801c776c396ef17608390f8c282520f0d
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1ce14b24bba7 mysql:1.0 "docker-entrypoint..." 8 seconds ago Up 7 seconds 0.0.0.0:3306->3306/tcp, 33060/tcp mysql
$ mysql -h127.0.0.1 -uuser -ppassword
Warning: Using a password on the command line interface can be insecure.
…
mysql>
ハンズオン終了・答え合わせ
GCEで作業用サーバを構築する
(事前にやっておくかも)
GCEにSSHする
ホームディレクトリで
$ cd app/backend/
$ view Dockerfile
$ sudo docker build ./ -t backend:1.0
Sending build context to Docker daemon 20.48 kB
…
Successfully built 575c86da500c
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
backend 1.0 575c86da500c 18 seconds ago 235 MB
mysql 1.0 e34c079ee87a 4 minutes ago 372 MB
docker.io/alpine latest cdf98d1859c1 2 days ago 5.53 MB
docker.io/mysql 5.7 98455b9624a9 2 weeks ago 372 MB
$ sudo docker run --name backend -itd -e MYSQL_IP=$HOST_IP -p 9200:9200 backend:1.0
c4fcca19bea6227ddd9d6205bfb65d2c3e53591ef58d31629ff77e790513d731
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c4fcca19bea6 backend:1.0 "/bin/sh -c 'pytho..." 14 seconds ago Up 13 seconds 0.0.0.0:9200->9200/tcp backend
1ce14b24bba7 mysql:1.0 "docker-entrypoint..." 3 minutes ago Up 3 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp mysql
$ curl localhost:9200/tasks
[]
ハンズオン終了・答え合わせ(別解)
docker-compose(http://docs.docker.jp/compose/toc.html)
を利用して、複数コンテナを一括で管理する
※コンテナを単体で起動済みだと立ち上げに失敗するため、
事前に落としておくこと
$ cd app/
$ view docker-compose.yml
$ sudo docker-compose up -d
Creating network "app_default" with the default driver
…
Creating app_backend_1 ... Done
$ curl localhost:9200/tasks
[]
Kubernetesとは
• コンテナの自動デプロイ、スケーリング、運用自動化のために
設計されたプラットフォーム
• 略してk8sと呼ばれることが多い
• コンテナを使うならこっちも抑えておこう
Kubernetes用語集
• Cluster
• k8s上で実行される一つのサービス環境
• Node
• ワーカーマシン(物理マシン or VM)
• Pod
• Kubernetes上のデプロイ最小単位で
1つ以上のコンテナを持つ
• Pod内のコンテナは同じノードで動作
• PodごとにIPアドレスが振られる
Container α
Container β
Container γ
Pod A Pod B
Node 1
Container α
Container β
Container γ
Pod A Pod B
Node 2
k8s Cluster
Kubernetes用語集
• ReplicaSet
• Podのレプリカのグループ
• 指定の数だけPodを起動して、その数を維持
• Deployment
• ReplicaSetの世代管理を行う設計図の役割
• ローリングアップデート、ロールバックが可能
• Service
• Podとの通信に単一の
エンドポイントを提供する
管理概念
通信概念
Deployment
ReplicaSet
Pod A Pod B
Service
Pod A
Pod B
ReplicaSetを管理
Podの数を管理
Podへ振り分け
ServiceのIPで
アクセス
192.0.2.1
Kubernetesの特長
1. Immutable Infrastructure
2. 宣言的設定
3. 自己修復
4. 充実したエコシステム
Kubernetesの特長
1. Immutable Infrastructure
• サーバの構成変更にはリスクが伴う
• 既存環境を壊さずに
アップデートするのは大変
• 対応コストも大きい
 一度構築した環境に手を加えない
→システムを更新するときは
環境ごと作り直す
出典:https://www.itmedia.co.jp/enterprise/articles/1701/23/news036.html
Kubernetesの特長
2. 宣言的設定
1. マニフェストによる構成情報の宣言的記述
2. Reconciliation Loop
3. LoadBalancer連携
Kubernetesの特長
2.1.マニフェストによる構成情報の宣言的記述
: Node
: Pod
マニフェスト
マニフェスト
適用
Kubernetesの特長
2.2. Reconciliation Loop
以下のループを繰り返す
① 現在の状態を確認
② 現在の状態と理想状態を比較
理想状態:マニフェストの記述
③ 差分に対する処理を実行
出典:https://deeeet.com/writing/2018/12/13/how-kubernetes-change-our-way-of-automation/
理想状態 現在状態
差分比較
処理実行
Kubernetesの特長
2.3. LoadBalancer連携
マニフェストに記述することでLoad Balancerを利用可能
Load Balancer
マニフェスト
適用
Kubernetesの特長
3. 自己修復
1. セルフヒーリング
2. ローリングアップデート
Kubernetesの特長
3.1. セルフヒーリング
• ReplicaSetはPodのReplica数を維持し続ける
 障害などでPodが不足した場合は、別のNode上で高速に起動
Node故障
Kubernetesの特長
3.2. ローリングアップデート
• サービスの更新時、Podごとに順番にアップデート
① ロードバランサからの除外
② コンテナイメージのアップデート
③ ロードバランサへの追加
Load Balancer Load Balancer Load Balancer Load Balancer
① ② ③
: 更新前のPod
: 更新後のPod
Kubernetesの特長
4. 充実したエコシステム
出典:https://landscape.cncf.io/
GKEとは
• Kubernetesを簡単に扱うことのできるGCPサービス
• Kubernetes自体がGoogleが開発したOSS
• GKEを利用しているサービス例
とりあえず作ってみましょう
GKE構築手順
• node(VM)を構築する
• Deploymentでpodを作成
• Serviceでpodにアクセスするための口を定義する
ハンズオン(演習):GKEで課題アプリ
を立てる
1.DockerイメージをContainer Registryにpush
2.kubernetesクラスタ(node)を作成
3.MySQLイメージを使ったpodをデプロイし、
外部に公開(deployment ・service 作成)
4.backendイメージを使ったpodをデプロイし、
外部に公開(deployment ・service 作成)
ハンズオン(演習):GKEで課題アプリ
を立てる
1.DockerイメージをContainer Registryにpush
GUI:https://console.cloud.google.com/gcr/images/
$ export NAME=[YOUR_NAME]
$ export PROJCT=[GCP_PROJECT_ID]
$ sudo docker tag mysql:1.0 asia.gcr.io/caas-ho-01-76304299/mysql-$NAME:1.0
$ sudo docker tag backend:1.0 asia.gcr.io/caas-ho-01-76304299/backend-$NAME:1.0
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
asia.gcr.io/caas-project/backend-gossy 1.0 a71a4c162b3d About an hour ago 235 MB
backend 1.0 a71a4c162b3d About an hour ago 235 MB
apache 1.0 d7b1249a1f7a About an hour ago 10.4 MB
asia.gcr.io/ caas-project/mysql-gossy 1.0 ce751d780388 About an hour ago 372 MB
mysql 1.0 ce751d780388 About an hour ago 372 MB
docker.io/alpine latest cdf98d1859c1 2 days ago 5.53 MB
docker.io/mysql 5.7 98455b9624a9 2 weeks ago 372 MB
$ sudo gcloud docker -- push asia.gcr.io/$PROJECT/mysql-$NAME:1.0
WARNING: `gcloud docker` will not be supported for Docker client versions above 18.03.
…
1.0: digest: sha256:c8e81dfff7d8a09c0528fd81f704631984edea29ddd901204cda43f834573dd8 size: 2828
$ sudo gcloud docker -- push asia.gcr.io/ $PROJECT/backend-$NAME:1.0
WARNING: `gcloud docker` will not be supported for Docker client versions above 18.03.
…
1.0: digest: sha256:03a1435aa95f3521c16bba650f4390902115a4022b6643f80d482568dba96ed0 size: 1367
ハンズオン(演習):GKEで課題アプリ
を立てる
2.kubernetesクラスタ(node)を作成
GUI:https://console.cloud.google.com/kubernetes/list
$ gcloud container clusters create --num-nodes=1 caas-${NAME} --region asia-northeast1 --machine-type g1-small --enable-autoscaling --min-nodes=1 --
max-nodes=2
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.
…
NAME LOCATION MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS
caas-gossy asia-northeast1 1.11.7-gke.12 35.221.91.90 g1-small 1.11.7-gke.12 3 RUNNING
$ gcloud container clusters list
NAME LOCATION MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS
caas-gossy asia-northeast1 1.11.7-gke.12 35.221.91.90 g1-small 1.11.7-gke.12 3 RUNNING
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
gke-caas-gossy-default-pool-1bb7e39c-dg0p Ready <none> 2m v1.11.7-gke.12
gke-caas-gossy-default-pool-4a92f4d4-fqxk Ready <none> 2m v1.11.7-gke.12
gke-caas-gossy-default-pool-644ee183-jt15 Ready <none> 2m v1.11.7-gke.12
ハンズオン(演習):GKEで課題アプリ
を立てる
3.MySQLイメージを使ったpodをデプロイし、
外部に公開(deployment ・service 作成)
$ cd app/mysql/
$ envsubst < mysql-deployment.yaml | kubectl create -f -
deployment.extensions/mysql-gossy-deployment created
$ kubectl get deployments
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
mysql-gossy-deployment 2 2 2 2 26s
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
mysql-gossy-deployment-56c95f5cc7-k4rqp 1/1 Running 0 47s
mysql-gossy-deployment-56c95f5cc7-scxpc 1/1 Running 0 47s
$ envsubst < mysql-service.yaml | kubectl create -f -
service/mysql-gossy-service created
$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.63.240.1 <none> 443/TCP 12m
mysql-gossy-service LoadBalancer 10.63.245.139 <pending> 3306:30555/TCP 42s
ハンズオン(演習):GKEで課題アプリ
を立てる
3.MySQLイメージを使ったpodをデプロイし、
外部に公開(deployment ・service 作成)
IN_MYSQL_IP: cluster内でのみ利用できるローカルIP
EX_MYSQL_IP: cluster外でも利用できるグローバルIP
GUI(deployment):https://console.cloud.google.com/kubernetes/workload
GUI(service):https://console.cloud.google.com/kubernetes/discovery
$ kubectl get services mysql-$NAME-service -o=jsonpath="{.spec.clusterIP}"
10.63.245.139
$ kubectl get services mysql-$NAME-service -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"
35.194.102.226
$ export IN_MYSQL_IP=`kubectl get services mysql-$NAME-service -o=jsonpath="{.spec.clusterIP}"`
$ export EX_MYSQL_IP=`kubectl get services mysql-$NAME-service -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`
$ mysql -h$EX_MYSQL_IP -uuser -ppassword
Warning: Using a password on the command line interface can be insecure.
…
mysql>
ハンズオン(演習):GKEで課題アプリ
を立てる
4.backendイメージを使ったpodをデプロイし、
外部に公開(deployment ・service 作成)
$ cd app/backend/
$ envsubst < backend-deployment.yaml | kubectl create -f -
deployment.extensions/backend-gossy-deployment created
$ kubectl get deployments
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
backend-gossy-deployment 2 2 2 0 10s
mysql-gossy-deployment 2 2 2 2 16m
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
backend-gossy-deployment-5746c85f4b-b84bq 1/1 Running 0 24s
backend-gossy-deployment-5746c85f4b-lg4g4 1/1 Running 0 24s
mysql-gossy-deployment-56c95f5cc7-k4rqp 1/1 Running 0 16m
mysql-gossy-deployment-56c95f5cc7-scxpc 1/1 Running 0 16m
$ envsubst < backend-service.yaml | kubectl create -f -
service/backend-gossy-service created
$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
backend-gossy-service LoadBalancer 10.63.254.100 34.85.113.63 9200:30926/TCP 50s
kubernetes ClusterIP 10.63.240.1 <none> 443/TCP 26m
mysql-gossy-service LoadBalancer 10.63.245.139 35.194.102.226 3306:30555/TCP 14m
ハンズオン(演習):GKEで課題アプリ
を立てる
4.backendイメージを使ったpodをデプロイし、
外部に公開(deployment ・service 作成)
IN_BACKEND_IP:cluster内でのみ利用できるローカルIP
EX_BACKEND_IP:cluster外でも利用できるグローバルIP
GUI(deployment):https://console.cloud.google.com/kubernetes/workload
GUI(service):https://console.cloud.google.com/kubernetes/discovery
$ kubectl get services backend-$NAME-service -o=jsonpath="{.spec.clusterIP}"
10.63.254.100
$ kubectl get services backend-$NAME-service -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"
34.85.113.63
$ export IN_BACKEND_IP=`kubectl get services backend-$NAME-service -o=jsonpath="{.spec.clusterIP}"`
$ export EX_BACKEND_IP=`kubectl get services backend-$NAME-service -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`
$ curl $EX_BACKEND_IP:9200/tasks
[]
ハンズオン(課題):課題アプリを
Dockerで実装
• 構成図
Backend
IP1:IN_BACKEND_IP
IP2:EX_BACKEND_IP
MySQL
IP1:IN_MYSQL_IP
IP2:EX_MYSQL_IP
IN_MYSQL_IP :3306_EX_BACKEND_IP:9200
ハンズオン(演習):GKEの課題アプリ
を改良する
・とりあえず何かtaskをpostしてみよう
・何回かgetしてみよう
すると…?
$ curl -XPOST -H "Content-Type: application/json" -d '{"item":"test"}' $EX_BACKEND_IP:9200/tasks
{
"id": 1,
"is_done": false,
"item": "test"
}
$ curl $EX_BACKEND_IP:9200/tasks
ハンズオン(演習):GKEで課題アプリ
を立てる
上手く起動しないときは以下の手順で調査
# log確認
kubectl logs [pod_name]
# ssh(attach)
kubectl exec -it [pod_name] /bin/sh
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
backend-gossy-deployment-5746c85f4b-b84bq 1/1 Running 0 24s
backend-gossy-deployment-5746c85f4b-lg4g4 1/1 Running 0 24s
mysql-gossy-deployment-56c95f5cc7-k4rqp 1/1 Running 0 16m
mysql-gossy-deployment-56c95f5cc7-scxpc 1/1 Running 0 16m
$ kubectl logs backend-gossy-deployment-5746c85f4b-b84bq
* Serving Flask app "run" (lazy loading)
…
172.17.0.1 - - [15/Apr/2019 12:11:37] "GET /tasks HTTP/1.1" 200 -
$ kubectl exec -it backend-gossy-deployment-5746c85f4b-b84bq /bin/sh
# hostname
ef275c2307c7
ハンズオン終了・答え合わせ
症状:getすると何回かに1回しか正しい結果が返ってない
$ curl $EX_BACKEND_IP:9200/tasks
[]
$ curl -XPOST -H "Content-Type: application/json" -d '{"item":"test"}' $EX_BACKEND_IP:9200/tasks
{
"id": 1,
"is_done": false,
"item": "test"
}
$ curl $EX_BACKEND_IP:9200/tasks
[]
$ curl $EX_BACKEND_IP:9200/tasks
[
{
"id": 1,
"is_done": false,
"item": "test"
}
]
$ curl $EX_BACKEND_IP:9200/tasks
[]
$ curl $EX_BACKEND_IP:9200/tasks
[
{
"id": 1,
"is_done": false,
"item": "test"
}
]
ハンズオン終了・答え合わせ
症状:getすると何回かに1回しか正しい結果が返ってない
・MySQLがレプリケートされていないのが原因
・SQLのようにデータの整合性が求められるものはスケールアウト
に向かない
→コンテナ内で可変データを持たないようにしよう
・今回はGCPマネージドサービスのCloudSQLを使ってみる
ハンズオン終了・答え合わせ
手順
1.Cloud SQLを構築する
(https://console.cloud.google.com/sql/instances)
2.prepare.salを投入する
3.backend-deployment.ymlのMYSQL_IPをCloud SQLのIPに
書き換える
4.下記コマンドでbackendのdeploymentを更新する
5.再度getをする
envsubst < backend-service.yaml | kubectl apply -f -
ハンズオン終了・答え合わせ
解決!
$ curl $EX_BACKEND_IP:9200/tasks
[]
$ curl -XPOST -H "Content-Type: application/json" -d '{"item":"test"}' $EX_BACKEND_IP:9200/tasks
{
"id": 1,
"is_done": false,
"item": "test"
}
$ curl $EX_BACKEND_IP:9200/tasks
[
{
"id": 1,
"is_done": false,
"item": "test"
}
]
$ curl $EX_BACKEND_IP:9200/tasks
[
{
"id": 1,
"is_done": false,
"item": "test"
}
]

More Related Content

What's hot

クラウド+ソフトウェアで起こすイノベーション
クラウド+ソフトウェアで起こすイノベーションクラウド+ソフトウェアで起こすイノベーション
クラウド+ソフトウェアで起こすイノベーションServerworks Co.,Ltd.
 
CodeBuildを身近にするためのはじめの一歩
CodeBuildを身近にするためのはじめの一歩CodeBuildを身近にするためのはじめの一歩
CodeBuildを身近にするためのはじめの一歩淳 千葉
 
Spring Boot ユーザの方のための Quarkus 入門
Spring Boot ユーザの方のための Quarkus 入門Spring Boot ユーザの方のための Quarkus 入門
Spring Boot ユーザの方のための Quarkus 入門tsukasamannen
 
AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 - AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 - SORACOM, INC
 
初心者向けWebinar AWSでDRを構築しよう
初心者向けWebinar AWSでDRを構築しよう初心者向けWebinar AWSでDRを構築しよう
初心者向けWebinar AWSでDRを構築しようAmazon Web Services Japan
 
AWS & Google Cloudを使ったシステム開発/技術選定のはなし
AWS & Google Cloudを使ったシステム開発/技術選定のはなしAWS & Google Cloudを使ったシステム開発/技術選定のはなし
AWS & Google Cloudを使ったシステム開発/技術選定のはなし修一 高橋
 
AWS re:Invent 2015に初参戦→気づいたらOSS二つ作ってた
AWS re:Invent 2015に初参戦→気づいたらOSS二つ作ってたAWS re:Invent 2015に初参戦→気づいたらOSS二つ作ってた
AWS re:Invent 2015に初参戦→気づいたらOSS二つ作ってた佑介 九岡
 
初心者向けWebinar スケーラブルWebアプリケーションの構築
初心者向けWebinar スケーラブルWebアプリケーションの構築初心者向けWebinar スケーラブルWebアプリケーションの構築
初心者向けWebinar スケーラブルWebアプリケーションの構築Amazon Web Services Japan
 
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~Yuichi Hasegawa
 
re:Inventの振り返りで学ぶAWSを利用したデータ活用戦略と、サバカン屋の新作缶づめ戦略
re:Inventの振り返りで学ぶAWSを利用したデータ活用戦略と、サバカン屋の新作缶づめ戦略re:Inventの振り返りで学ぶAWSを利用したデータ活用戦略と、サバカン屋の新作缶づめ戦略
re:Inventの振り返りで学ぶAWSを利用したデータ活用戦略と、サバカン屋の新作缶づめ戦略株式会社スカイアーチネットワークス
 
実践サーバレスアーキテクチャ
実践サーバレスアーキテクチャ実践サーバレスアーキテクチャ
実践サーバレスアーキテクチャ太郎 test
 
クラウド案件の作り方 for azureしなの4周年
クラウド案件の作り方 for azureしなの4周年クラウド案件の作り方 for azureしなの4周年
クラウド案件の作り方 for azureしなの4周年Kuniteru Asami
 
Seasar2で作った俺たちのサービスの今
Seasar2で作った俺たちのサービスの今Seasar2で作った俺たちのサービスの今
Seasar2で作った俺たちのサービスの今Koichi Sakata
 
コンテナで作れるFaaS
コンテナで作れるFaaSコンテナで作れるFaaS
コンテナで作れるFaaS真吾 吉田
 
WebサービスStartUP向け AWSスケーラブルな構成例
WebサービスStartUP向け AWSスケーラブルな構成例WebサービスStartUP向け AWSスケーラブルな構成例
WebサービスStartUP向け AWSスケーラブルな構成例Amazon Web Services Japan
 
アプリエンジニアからクラウド専用のインフラエンジニアになってみて
アプリエンジニアからクラウド専用のインフラエンジニアになってみてアプリエンジニアからクラウド専用のインフラエンジニアになってみて
アプリエンジニアからクラウド専用のインフラエンジニアになってみてSato Shun
 
AWS Black Belt Techシリーズ AWS Elastic Beanstalk
AWS Black Belt Techシリーズ  AWS  Elastic  BeanstalkAWS Black Belt Techシリーズ  AWS  Elastic  Beanstalk
AWS Black Belt Techシリーズ AWS Elastic BeanstalkAmazon Web Services Japan
 
Kinesis Firehoseを使ってみた
Kinesis Firehoseを使ってみたKinesis Firehoseを使ってみた
Kinesis Firehoseを使ってみたMasaki Misawa
 
はじめてのAWS Lambda
はじめてのAWS LambdaはじめてのAWS Lambda
はじめてのAWS LambdaMasaki Misawa
 

What's hot (20)

クラウド+ソフトウェアで起こすイノベーション
クラウド+ソフトウェアで起こすイノベーションクラウド+ソフトウェアで起こすイノベーション
クラウド+ソフトウェアで起こすイノベーション
 
CodeBuildを身近にするためのはじめの一歩
CodeBuildを身近にするためのはじめの一歩CodeBuildを身近にするためのはじめの一歩
CodeBuildを身近にするためのはじめの一歩
 
Spring Boot ユーザの方のための Quarkus 入門
Spring Boot ユーザの方のための Quarkus 入門Spring Boot ユーザの方のための Quarkus 入門
Spring Boot ユーザの方のための Quarkus 入門
 
AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 - AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 -
 
初心者向けWebinar AWSでDRを構築しよう
初心者向けWebinar AWSでDRを構築しよう初心者向けWebinar AWSでDRを構築しよう
初心者向けWebinar AWSでDRを構築しよう
 
AWS & Google Cloudを使ったシステム開発/技術選定のはなし
AWS & Google Cloudを使ったシステム開発/技術選定のはなしAWS & Google Cloudを使ったシステム開発/技術選定のはなし
AWS & Google Cloudを使ったシステム開発/技術選定のはなし
 
AWS re:Invent 2015に初参戦→気づいたらOSS二つ作ってた
AWS re:Invent 2015に初参戦→気づいたらOSS二つ作ってたAWS re:Invent 2015に初参戦→気づいたらOSS二つ作ってた
AWS re:Invent 2015に初参戦→気づいたらOSS二つ作ってた
 
初心者向けWebinar スケーラブルWebアプリケーションの構築
初心者向けWebinar スケーラブルWebアプリケーションの構築初心者向けWebinar スケーラブルWebアプリケーションの構築
初心者向けWebinar スケーラブルWebアプリケーションの構築
 
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
 
re:Inventの振り返りで学ぶAWSを利用したデータ活用戦略と、サバカン屋の新作缶づめ戦略
re:Inventの振り返りで学ぶAWSを利用したデータ活用戦略と、サバカン屋の新作缶づめ戦略re:Inventの振り返りで学ぶAWSを利用したデータ活用戦略と、サバカン屋の新作缶づめ戦略
re:Inventの振り返りで学ぶAWSを利用したデータ活用戦略と、サバカン屋の新作缶づめ戦略
 
実践サーバレスアーキテクチャ
実践サーバレスアーキテクチャ実践サーバレスアーキテクチャ
実践サーバレスアーキテクチャ
 
クラウド案件の作り方 for azureしなの4周年
クラウド案件の作り方 for azureしなの4周年クラウド案件の作り方 for azureしなの4周年
クラウド案件の作り方 for azureしなの4周年
 
Seasar2で作った俺たちのサービスの今
Seasar2で作った俺たちのサービスの今Seasar2で作った俺たちのサービスの今
Seasar2で作った俺たちのサービスの今
 
コンテナで作れるFaaS
コンテナで作れるFaaSコンテナで作れるFaaS
コンテナで作れるFaaS
 
WebサービスStartUP向け AWSスケーラブルな構成例
WebサービスStartUP向け AWSスケーラブルな構成例WebサービスStartUP向け AWSスケーラブルな構成例
WebサービスStartUP向け AWSスケーラブルな構成例
 
アプリエンジニアからクラウド専用のインフラエンジニアになってみて
アプリエンジニアからクラウド専用のインフラエンジニアになってみてアプリエンジニアからクラウド専用のインフラエンジニアになってみて
アプリエンジニアからクラウド専用のインフラエンジニアになってみて
 
AWS Black Belt Techシリーズ AWS Elastic Beanstalk
AWS Black Belt Techシリーズ  AWS  Elastic  BeanstalkAWS Black Belt Techシリーズ  AWS  Elastic  Beanstalk
AWS Black Belt Techシリーズ AWS Elastic Beanstalk
 
EC-CUBE & AWS Hands-on
EC-CUBE & AWS Hands-on EC-CUBE & AWS Hands-on
EC-CUBE & AWS Hands-on
 
Kinesis Firehoseを使ってみた
Kinesis Firehoseを使ってみたKinesis Firehoseを使ってみた
Kinesis Firehoseを使ってみた
 
はじめてのAWS Lambda
はじめてのAWS LambdaはじめてのAWS Lambda
はじめてのAWS Lambda
 

Similar to 2019年度 CaaS ワークショップ @ NTTコム

Docker Swarm モード にゅうもん
Docker Swarm モード にゅうもんDocker Swarm モード にゅうもん
Docker Swarm モード にゅうもんMasahito Zembutsu
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでRyo Nakamaru
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Masahito Zembutsu
 
明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築MILI-LLC
 
オトナのDocker入門
オトナのDocker入門オトナのDocker入門
オトナのDocker入門Tsukasa Kato
 
Dockerクイックツアー
DockerクイックツアーDockerクイックツアー
DockerクイックツアーEtsuji Nakai
 
AKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみたAKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみたHideaki Aoyagi
 
AKS (k8s) Hands on Lab Contents
AKS (k8s) Hands on Lab ContentsAKS (k8s) Hands on Lab Contents
AKS (k8s) Hands on Lab ContentsYoshio Terada
 
Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法Microsoft Corporation
 
Docker実践入門
Docker実践入門Docker実践入門
Docker実践入門hiro nemu
 
分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーション分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーションMasahito Zembutsu
 
OpenStackをさらに”使う”技術 - OpenStack&Docker活用テクニック
OpenStackをさらに”使う”技術 - OpenStack&Docker活用テクニックOpenStackをさらに”使う”技術 - OpenStack&Docker活用テクニック
OpenStackをさらに”使う”技術 - OpenStack&Docker活用テクニックEtsuji Nakai
 
20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!Midori Oge
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Masahito Zembutsu
 
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)Daisuke Ikeda
 
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編Masahito Zembutsu
 
マイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorpマイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorpMasahito Zembutsu
 
20150101勉強会 dokku alt
20150101勉強会 dokku alt20150101勉強会 dokku alt
20150101勉強会 dokku altShugo Numano
 
Osc fukuoka xAI Meetup
Osc fukuoka xAI MeetupOsc fukuoka xAI Meetup
Osc fukuoka xAI Meetupru pic
 

Similar to 2019年度 CaaS ワークショップ @ NTTコム (20)

Docker Swarm モード にゅうもん
Docker Swarm モード にゅうもんDocker Swarm モード にゅうもん
Docker Swarm モード にゅうもん
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話
 
明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築
 
オトナのDocker入門
オトナのDocker入門オトナのDocker入門
オトナのDocker入門
 
Dockerクイックツアー
DockerクイックツアーDockerクイックツアー
Dockerクイックツアー
 
AKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみたAKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみた
 
AKS (k8s) Hands on Lab Contents
AKS (k8s) Hands on Lab ContentsAKS (k8s) Hands on Lab Contents
AKS (k8s) Hands on Lab Contents
 
Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法
 
Docker実践入門
Docker実践入門Docker実践入門
Docker実践入門
 
分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーション分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーション
 
OpenStackをさらに”使う”技術 - OpenStack&Docker活用テクニック
OpenStackをさらに”使う”技術 - OpenStack&Docker活用テクニックOpenStackをさらに”使う”技術 - OpenStack&Docker活用テクニック
OpenStackをさらに”使う”技術 - OpenStack&Docker活用テクニック
 
20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
 
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
 
マイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorpマイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorp
 
20150101勉強会 dokku alt
20150101勉強会 dokku alt20150101勉強会 dokku alt
20150101勉強会 dokku alt
 
Open Source x AI
Open Source x AIOpen Source x AI
Open Source x AI
 
Osc fukuoka xAI Meetup
Osc fukuoka xAI MeetupOsc fukuoka xAI Meetup
Osc fukuoka xAI Meetup
 

Recently uploaded

論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 

Recently uploaded (9)

論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 

2019年度 CaaS ワークショップ @ NTTコム