SlideShare a Scribd company logo
1 of 136
Download to read offline
CyberAgent, Inc. All Rights Reserved
アメブロの大規模システム刷新と
それを支えるSpring
1
自己紹介
向井 政貴
株式会社サイバーエージェント
サーバサイドエンジニア
アメーバブログの開発・運用を担当
最近会社の料理部が楽しい
2
2015年の状況
システム刷新
まとめ
アメーバブログとは
3
CyberAgent, Inc. All Rights Reserved
アメーバブログ
4
アメーバブログ
PC、スマホ、ガラケー、アプリ
ランキングなど周辺サービス
5
アメーバブログ
2004年9月サービス開始
約12年続くサービス
6
CyberAgent, Inc. All Rights Reserved
2015年
アメブロの状況
7
古いバージョンの技術
8
MySQL 4系
CentOS 4系
java 1.5 ~ 1.7
9
複数のプロダクトに
似たような処理
10
ブラウザから記事投稿できるよね
アプリからも記事をかけるようにしたい!
同じ機能だけどAPIとして
新しく作るか・・
アメブロ
記事投稿
API
記事投稿
11
API
ブラウザから読者登録できるよね
アプリからも読者登録したい!
アメブロ
記事投稿
API
記事投稿
読者登録 読者登録
同じ機能だけどAPIとして
新しく作るか・・
12
API API
調査用に記事情報を取得したい!
アメブロ
記事投稿
API
記事投稿
読者登録 読者登録
同じ機能だけどAPIとして(ry
記事取得 記事取得
13
フレームワークの混在
14
Struts 1.x , S2Struts, Spring 3.x
● Struts から Spring3 に移行しようと頑張った
形跡はある…
● ややこしい
● 学習コスト
15
苦労の多い動作確認環境
16
動作確認方法の歴史
2013年
.class
SCP!!!!
ビルド
.class
チーム共用
ステージングサーバ
17
動作確認方法の歴史
2013年
2014年 個人開発用サーバ
PUSH
DEPLOY
18
動作確認方法の歴史
2013年
2014年 個人開発用サーバ
2015年 ココ
19
失われた思想(?)
20
実際のコード例:記事データ検索メソッド
public void search(boolean showEntryTextFlag) {
!? !?
21
いろいろあるけど
大まかに言うと
22
保守性の低下
増大していく開発コスト
ビューとビジネスロジックの強い依存関係
刷新前システムの課題
23
CyberAgent, Inc. All Rights Reserved
さらに
24
CyberAgent, Inc. All Rights Reserved
_人人人人人人人人人人人_
>  データセンター移設  <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
25
アメブロのシステムの大部分が
稼働していたDCから撤退
26
保守機材の在庫が限界
27
LBやコアスイッチの
調子が悪化
28
1. 既存システムのまま移設する
2. 作り直して移設する
選択肢
29
どちらにするか
30
作り直すとして
間に合うのか
31
何か障害が起きないか
32
怖い
33
刷新前のシステムつらい
34
面白くない
35
このままだと新しい人が
入ってこない
36
世間の技術トレンド
から遅れる
37
開発速度は遅くなる一方
38
39
CyberAgent, Inc. All Rights Reserved
システム刷新だ
40
システム規模
41
40超
数百台
刷新後のあるAPIサーバ
へのリクエスト数
60万リクエスト/m
サーバ台数
プロジェクト数
5300万人(2016年8月時点)会員数
ページがみれないと広告が表示されないため売上に直撃
社内他サービスへの影響
芸能事務所から問い合わせ
システムになにかあると...
42
CyberAgent, Inc. All Rights Reserved
システム刷新の対象
43
44
フロント
エンド
バック
エンド
CyberAgent, Inc. All Rights Reserved
システム刷新の要件
45
障害なし
長期のサービス停止は回避
DC移設までに完遂
画面や機能の仕様を維持
開発コスト減少
一般的なアーキテクチャ
MUST WANT
46
47
CyberAgent, Inc. All Rights Reserved
Why Spring?
48
低い導入コスト
開発陣の慣れ
テンプレートの使い回し
刷新前のシステムにSpringの採用実績
49
ローカル開発環境
開発コストの削減
ローカル開発による生産性の向上
50
@Controller, @Service, @Repository
共通の認識があるレイヤードなアーキテクチャ
アーキテクチャを統一しやすい
51
CyberAgent, Inc. All Rights Reserved
システム刷新
52
保守性の低下
増大していく開発コスト
ビューとビジネスロジックの強い依存関係
刷新前システムの課題(再掲)
53
保守性の低下
増大していく開発コスト
ビューとビジネスロジックの強い依存関係
従来システムの課題
54
CyberAgent, Inc. All Rights Reserved
保守性の低下
55
処理が適切な粒度でまとまっていない
56
刷新前システムの課題
アメブロ
ORM
ビジネスロジック
57
人によって処理を書く場所がバラバラ
再利用性や可読性が低い
刷新前のシステム
レイヤードアーキテクチャ
58
刷新後システムの設計
Controller
Facade
Service
Repository
リクエストを受けて
結果を返す
一操作に必要な
Serviceの呼び出し
最低限、
まとめておくべき
ビジネスロジック
DBアクセスや
APIの呼び出し
59
ポリシーの統一化
再利用性、可読性向上
メンテされているのかわからない
APIドキュメント
刷新前システムの課題
60
wikiにAPIドキュメント用意
手動でメンテナンス
実際のソースコードとの整合性が不安
61
Springfox + Swaggerによる
自動ドキュメント化
62
https://github.com/springfox/springfox
https://github.com/swagger-api/swagger-ui
63
@RequestMapping(
method = RequestMethod.GET,
value = "/v1.0/public/blogger/{amebaId}"
)
public BloggerResponse getBlogger (
@PathVariable("amebaId") String amebaId
) {
return bloggerFacade.getBlogger(amebaId);
}
64
エンドポイントを自動的にドキュメントに反映
複雑なドキュメントはSwaggerのアノテーションが必要
エンドポイントのきれいな一覧だけでもだいぶありがたい
65
ここまでで25分ぐらい
66
保守性の低下
増大していく開発コスト
ビューとビジネスロジックの強い依存関係
刷新前システムの課題
67
自己紹介
服部 拓也
2013年 株式会社サイバーエージェント入社
入社以来アメーバブログのサーバーサイドを担当
現在はディレクションとマネジメントを兼務
マイブームは喘息
68
CyberAgent, Inc. All Rights Reserved
69
 開発コスト
70
ローカル開発環境ない ・ 
動作確認方法の歴史 (再掲)
2013年
2014年 個人開発用サーバ
2015年 ココ
71
72
73
ローカル開発環境構築が容易
フロントエンドエンジニアでも簡単
-> 開発速度UP
74
プロダクトごとに
リポジトリが分散
75
76
77
ソースコードもリリースジョブも
再利用性が低い
削減できるはずのコスト
78
リポジトリの統合 ・
79
マルチプロジェクト化
80
81
リリースジョブを共通化できる
処理の見通しがよくなる
処理を共通化しやすくなる
刷新後システムの処理共通化
API βAPI α
Controller
Facade
Service
Repository
Controller
Facade
・・・
82
マルチプロジェクト構成によるコードの共通化
リリースジョブの統一化
-> 開発効率UP
83
CyberAgent, Inc. All Rights Reserved
だがしかし…
84
まとめたことによって
不要なのにBean化されてしまうクラスが増大
85
86
起動のためだけに
不要なBeanの設定が必要
まとめたことによってBean化されるクラスが増大
リポジトリ
Project A
Project B
Service Project Repository Project
87
まとめたことによってBean化されるクラスが増大
facade
service B
repository B
facade
service A
service C
service D
repository A
repository C
Project A
Project B
88
リポジトリ
まとめたことによってBean化されるクラスが増大
facade
service B
repository B
facade
service A
service C
service D
repository A
repository C
リポジトリ
Project A
89
まとめたことによってBean化されるクラスが増大
facade
service B
repository B
facade
service A
service C
service D
repository A
repository C
リポジトリ
Project A
90
どうしたか
まずは Service
91
FacadeクラスがAutowiredしているServiceクラスだけを
Bean化しよう!
● @Facadeアノテーションを作った
● @FacadeのついたクラスをBean化して、
そのFacadeクラスがAutowiredしているServiceクラスだけを
Bean化するInitializerを作った
92
@ComponentScan(
excludeFilters = {
@ComponentScan.Filter(
type = FilterType.ANNOTATION,
value = Facade.class
),
@ComponentScan.Filter(
type = FilterType.ANNOTATION,
value = Service.class
)
}
)
適用例
public class Main {
 public static void main(String[] args) {
  new SpringApplicationBuilder(Main.class)
   .initializers(
    new FacadeInitializer()
   )
   .run(args);
 }
}
93
まとめたことによってBean化されるクラスが増大
facade
service B
repository B
facade
service A
service C
service D
repository A
repository C
リポジトリ
@Facade
@Service
@Service
repository D
@Service
@Service
Project A
94
まとめたことによってBean化されるクラスが増大
facade
service B
repository B
facade
service A
service C
service D
repository A
repository C
リポジトリ
@Facade
@Service
@Service
repository D
@Service
@Service
95
Project A
まとめたことによってBean化されるクラスが増大
facade
service B
repository B
facade
service A
service C
service D
repository A
repository C
リポジトリ
@Facade
@Service
@Service
repository D
@Service
@Service
96
Project A
どうしたか
Repository編
97
プロダクト毎に接続先DBの情報をapplication.ymlに宣言する
● 宣言した接続先に関連するRepositoryだけをBean化する
Initializerを作った
98
まとめたことによってBean化されるクラスが増大
A repository B repository
C Datasource
C repositoryA repository B repository
C repository
application.ymlInitializer
99
100
jdbc:
blog: // [HOST] + [SCHEME] の組み合わせにユニークなネームスペースをつけたイメージ
master:
url: jdbc:mysql://[HOST]/[SCHEME]?zeroDateTimeBehavior=convertToNull&...
initialSize: 1
maxTotal: 1
...
slave:
url: jdbc:mysql://[HOST]/[SCHEME]?zeroDateTimeBehavior=convertToNull&...
initialSize: 1
maxTotal: 1
...
entry:
slave:
url: jdbc:mysql://[HOST]/[SCHEME]?zeroDateTimeBehavior=convertToNull&...
initialSize: 1
maxTotal: 1
...
application.yml
@ComponentScan(
excludeFilters = {
@ComponentScan.Filter(
type = FilterType.ANNOTATION,
value = Repository.class
),
@ComponentScan.Filter(
type = FilterType.ANNOTATION,
value = Facade.class
),
@ComponentScan.Filter(
type = FilterType.ANNOTATION,
value = Service.class
)
}
)
public class Main {
 public static void main(String[] args) {
  new SpringApplicationBuilder(Main.class)
   .initializers(
    new RepositoryInitializer(),
    new FacadeInitializer()
   )
   .run(args);
 }
}
101
適用例
まとめたことによってBean化されるクラスが増大
facade
service B
repository B
facade
service A
service C
service D
repository A
repository C
リポジトリ
repository D
102
まとめたことによってBean化されるクラスが増大
facade
service B
repository B
facade
service A
service C
service D
repository A
repository C
リポジトリ
repository D
103
外部API接続用のRepositoryが
残ってる
104
RepositoryクラスのBean化(API接続用)
@Configuration
public class SampleConfiguration {
@Bean
public SampleApiClient SampleApiClient(
HttpClient httpClient,
@Value("${sample.server.scheme}") String scheme,
@Value("${sample.server.host}") String host,
@Value("${sample.server.port}") Integer port
) {
・・・
}
@Bean
public SampleRepository SampleRepository
(SampleApiClient sampleApiClient) {・・・}
}
# application.yml
sample:
scheme: http
host: sample.ameba.jp
port: 80
105
RepositoryクラスのBean化(API接続用)
@ConditionalOnProperty (
prefix = "sample",
name = "enabled",
havingValue = "true",
matchIfMissing = false
)
@Configuration
public class SampleConfiguration {
@Bean
public SampleApiClient SampleApiClient(
HttpClient httpClient,
@Value("${sample.server.scheme}") String scheme,
@Value("${sample.server.host}") String host,
@Value("${sample.server.port}") Integer port
) {
・・・
}
@Bean
public SampleRepository SampleRepository
(SampleApiClient sampleApiClient) {・・・}
}
# application.yml
sample:
scheme: http
host: sample.ameba.jp
port: 80
enabled: true
106
まとめたことによってBean化されるクラスが増大
facade
service B
repository B
facade
service A
service C
service D
repository A
repository C
リポジトリ
repository D
107
まとめたことによってBean化されるクラスが増大
facade
service B
repository B
facade
service A
service C
service D
repository A
repository C
リポジトリ
repository D
108
共通化して起こった問題も
Springの機能で解決
109
保守性の低下
増大していく開発コスト
ビューとビジネスロジックの強い依存関係
刷新前システムの課題
110
CyberAgent, Inc. All Rights Reserved
 ビューとビジネスロジックの
 強い依存関係
111
Data Store
刷新前のシステム
アメブロ
ビジネスロジック
ORM
他サービスAPI
他サービスのAPI
112
ビュー
刷新前の
チームとシステムの関わり方
113
サーバーサイドフロントエンド
刷新前のチームとシステムの関わり方
サーバーとフロントでチームが別れている
ただし同じシステムをさわる
フロントエンドの最新技術導入しづらい
アメブロ
ORM
ビジネスロジック
ビュー
114
刷新前の他部署との連携状況
115
刷新前の他部署との連携状況
アメブロ
ビジネスロジック
ORM
秋葉原ラボ
ティーン向け
ブログサービス
etc..
記事データ
取りたい
アメブロにも投
稿したい
この中に組み込
まれている機能
を使いたい
116
ビュー
◯◯API
ORM
新規作成
ビジネスロジック
API Centricな
アーキテクチャ ・
117
Data Store
刷新前のシステム(再掲)
アメブロ
ビジネスロジック
ORM
他サービスAPI
他サービスのAPI
118
ビュー
刷新後のシステム
PC アメブロ
Controller
API
Facade
Service
スマホ アメブロ
Controller
Facade
Service
Controller
Facade
Service
Repository
ビューを生成する
処理に集中
ビジネスロジック
の提供に集中
Data Store
他サービスのAPI
119
JSON
ビュー ビュー
すぐに良いことが
120
他部署からの依頼対応工数の削減
AMPを特別対応なしで完了
スマホ版フロントエンドの刷新も特別対応なし
  参考) アメブロ2016 ~ React/ReduxでつくるIsomorphic web app ~
https://developers.cyberagent.co.jp/blog/archives/636/
121
CyberAgent, Inc. All Rights Reserved
API Centricの課題
122
通信コスト
123
複数レイヤにキャッシュを入れて対応
PC アメブロ
Controller
API
Facade
Service
スマホ アメブロ
Controller
Facade
Service
Controller
Facade
Service
Repository
Data Store
他サービスのAPI
124
ビュー ビュー
Client でキャッシュ
Repositoryでキャッシュ
APIの呼び出し元・先が
わかりづらい
(静的な意味で)
125
未解決
126
CyberAgent, Inc. All Rights Reserved
まとめ
127
技術面
ビジネス面
組織面
128
技術面でよかったこと
129
フロントエンドの技術がトレンドに乗りやすくなった
参考) アメブロ2016 ~ React/ReduxでつくるIsomorphic web app ~
https://developers.cyberagent.co.jp/blog/archives/636/
一般的なアーキテクチャに則った作りにできた
セキュリティリスクも抑制できている
技術的によかったこと
130
ビジネス面でよかったこと
131
AMP対応を短期間で完遂
フロントエンドを刷新しPVや広告収益が
短期間でより多くの施策が実現可能に
ビジネス的によかったこと
132
組織面でよかったこと
133
フロントエンドの開発チームを分離できた
新規の人材を取り込みやすくなった
よりよいサービスにしようという意識が強くなった
組織的によかったこと
134
CyberAgent, Inc. All Rights Reserved
最後に
135
本当に
やってよかった
136

More Related Content

What's hot

AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪
AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪
AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪
崇之 清水
 
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3techConsumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Toshiaki Maki
 
試験にでるSpring
試験にでるSpring試験にでるSpring
試験にでるSpring
土岐 孝平
 
サーバ構築・デプロイが簡単に!Elastic beanstalk
サーバ構築・デプロイが簡単に!Elastic beanstalkサーバ構築・デプロイが簡単に!Elastic beanstalk
サーバ構築・デプロイが簡単に!Elastic beanstalk
Hirokazu Ouchi
 
趣味と仕事の違い、現場で求められるアプリケーションの可観測性
趣味と仕事の違い、現場で求められるアプリケーションの可観測性趣味と仕事の違い、現場で求められるアプリケーションの可観測性
趣味と仕事の違い、現場で求められるアプリケーションの可観測性
LIFULL Co., Ltd.
 
AWS クックパッドの運用事例
AWS クックパッドの運用事例AWS クックパッドの運用事例
AWS クックパッドの運用事例
Satoshi Takada
 
50分で掴み取る ASP.NET Web API パターン&テクニック
50分で掴み取る ASP.NET Web API パターン&テクニック50分で掴み取る ASP.NET Web API パターン&テクニック
50分で掴み取る ASP.NET Web API パターン&テクニック
miso- soup3
 
[AWSマイスターシリーズ] AWS Elastic Beanstalk
[AWSマイスターシリーズ] AWS Elastic Beanstalk[AWSマイスターシリーズ] AWS Elastic Beanstalk
[AWSマイスターシリーズ] AWS Elastic Beanstalk
Amazon Web Services Japan
 

What's hot (20)

アメーバブログを支えるデータセンターとインフラ技術
アメーバブログを支えるデータセンターとインフラ技術 アメーバブログを支えるデータセンターとインフラ技術
アメーバブログを支えるデータセンターとインフラ技術
 
Behind-the-Scenes and Goals of LINE Summer Internship Program
Behind-the-Scenes and Goals of LINE Summer Internship ProgramBehind-the-Scenes and Goals of LINE Summer Internship Program
Behind-the-Scenes and Goals of LINE Summer Internship Program
 
アメブロ2016 アメブロフロント刷新にみる ひかりとつらみ
アメブロ2016 アメブロフロント刷新にみる ひかりとつらみアメブロ2016 アメブロフロント刷新にみる ひかりとつらみ
アメブロ2016 アメブロフロント刷新にみる ひかりとつらみ
 
[jjug] Java と Benchmark
[jjug] Java と Benchmark[jjug] Java と Benchmark
[jjug] Java と Benchmark
 
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Spring I/O 2016 報告 Test / Cloud / Other Popular SessionsSpring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
 
Springを使ったwebアプリにリファクタリングしよう
Springを使ったwebアプリにリファクタリングしようSpringを使ったwebアプリにリファクタリングしよう
Springを使ったwebアプリにリファクタリングしよう
 
AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪
AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪
AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪
 
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3techConsumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
 
自社クラウドサービスをAnsibleで作った話
自社クラウドサービスをAnsibleで作った話自社クラウドサービスをAnsibleで作った話
自社クラウドサービスをAnsibleで作った話
 
はじめての Elastic Beanstalk
はじめての Elastic Beanstalkはじめての Elastic Beanstalk
はじめての Elastic Beanstalk
 
Spring Security 5.0 解剖速報
Spring Security 5.0 解剖速報Spring Security 5.0 解剖速報
Spring Security 5.0 解剖速報
 
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
 
試験にでるSpring
試験にでるSpring試験にでるSpring
試験にでるSpring
 
サーバ構築・デプロイが簡単に!Elastic beanstalk
サーバ構築・デプロイが簡単に!Elastic beanstalkサーバ構築・デプロイが簡単に!Elastic beanstalk
サーバ構築・デプロイが簡単に!Elastic beanstalk
 
趣味と仕事の違い、現場で求められるアプリケーションの可観測性
趣味と仕事の違い、現場で求められるアプリケーションの可観測性趣味と仕事の違い、現場で求められるアプリケーションの可観測性
趣味と仕事の違い、現場で求められるアプリケーションの可観測性
 
AWS クックパッドの運用事例
AWS クックパッドの運用事例AWS クックパッドの運用事例
AWS クックパッドの運用事例
 
50分で掴み取る ASP.NET Web API パターン&テクニック
50分で掴み取る ASP.NET Web API パターン&テクニック50分で掴み取る ASP.NET Web API パターン&テクニック
50分で掴み取る ASP.NET Web API パターン&テクニック
 
[AWSマイスターシリーズ] AWS Elastic Beanstalk
[AWSマイスターシリーズ] AWS Elastic Beanstalk[AWSマイスターシリーズ] AWS Elastic Beanstalk
[AWSマイスターシリーズ] AWS Elastic Beanstalk
 
Spring integration概要
Spring integration概要Spring integration概要
Spring integration概要
 
MogileFS をバックエンドとしたPrivate S3の作り方 【後半】API 編
MogileFS をバックエンドとしたPrivate S3の作り方 【後半】API 編MogileFS をバックエンドとしたPrivate S3の作り方 【後半】API 編
MogileFS をバックエンドとしたPrivate S3の作り方 【後半】API 編
 

Similar to アメブロの大規模システム刷新とそれを支えるSpring.

Ec cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナーEc cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナー
Ayumu Kawaguchi
 
[AWSマイスターシリーズ] AWS OpsWorks
[AWSマイスターシリーズ] AWS OpsWorks[AWSマイスターシリーズ] AWS OpsWorks
[AWSマイスターシリーズ] AWS OpsWorks
Amazon Web Services Japan
 

Similar to アメブロの大規模システム刷新とそれを支えるSpring. (20)

Ec cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナーEc cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナー
 
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
 
[CTO Night & Day 2019] グローバルのサービス展開に向けたマルチリージョンアーキテクチャ- #ctonight
[CTO Night & Day 2019] グローバルのサービス展開に向けたマルチリージョンアーキテクチャ- #ctonight[CTO Night & Day 2019] グローバルのサービス展開に向けたマルチリージョンアーキテクチャ- #ctonight
[CTO Night & Day 2019] グローバルのサービス展開に向けたマルチリージョンアーキテクチャ- #ctonight
 
20180613 AWS Black Belt Online Seminar AWS Cloud9 入門
20180613 AWS Black Belt Online Seminar AWS Cloud9 入門20180613 AWS Black Belt Online Seminar AWS Cloud9 入門
20180613 AWS Black Belt Online Seminar AWS Cloud9 入門
 
(AWS DevOps祭り 2018) AWS Management Toolsサービスアプデートのご紹介
(AWS DevOps祭り 2018) AWS Management Toolsサービスアプデートのご紹介(AWS DevOps祭り 2018) AWS Management Toolsサービスアプデートのご紹介
(AWS DevOps祭り 2018) AWS Management Toolsサービスアプデートのご紹介
 
Reco choku tech night #09 -reinvent2018報告会-
Reco choku tech night #09 -reinvent2018報告会-Reco choku tech night #09 -reinvent2018報告会-
Reco choku tech night #09 -reinvent2018報告会-
 
[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonight
[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonight[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonight
[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonight
 
[CTO Night & Day 2019] CTO のための一歩進んだコンテナ入門 #ctonight
[CTO Night & Day 2019] CTO のための一歩進んだコンテナ入門 #ctonight[CTO Night & Day 2019] CTO のための一歩進んだコンテナ入門 #ctonight
[CTO Night & Day 2019] CTO のための一歩進んだコンテナ入門 #ctonight
 
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...
 
Gaming cicd-pipeline gaming-technight-2
Gaming cicd-pipeline gaming-technight-2Gaming cicd-pipeline gaming-technight-2
Gaming cicd-pipeline gaming-technight-2
 
20180220 AWS Black Belt Online Seminar - Amazon Container Services
20180220 AWS Black Belt Online Seminar - Amazon Container Services20180220 AWS Black Belt Online Seminar - Amazon Container Services
20180220 AWS Black Belt Online Seminar - Amazon Container Services
 
[AWSマイスターシリーズ] AWS OpsWorks
[AWSマイスターシリーズ] AWS OpsWorks[AWSマイスターシリーズ] AWS OpsWorks
[AWSマイスターシリーズ] AWS OpsWorks
 
CA Japan seminar mainframe2.0 2011/10/26
CA Japan seminar mainframe2.0 2011/10/26CA Japan seminar mainframe2.0 2011/10/26
CA Japan seminar mainframe2.0 2011/10/26
 
たった1時間でシステム構築!“激速”環境構築を実現する“パターン技術”の秘密とは
たった1時間でシステム構築!“激速”環境構築を実現する“パターン技術”の秘密とはたった1時間でシステム構築!“激速”環境構築を実現する“パターン技術”の秘密とは
たった1時間でシステム構築!“激速”環境構築を実現する“パターン技術”の秘密とは
 
実プロジェクトの経験から学ぶazureサービス適用パターン
実プロジェクトの経験から学ぶazureサービス適用パターン実プロジェクトの経験から学ぶazureサービス適用パターン
実プロジェクトの経験から学ぶazureサービス適用パターン
 
AWS Black Belt Online Seminar AWS Amplify
AWS Black Belt Online Seminar AWS AmplifyAWS Black Belt Online Seminar AWS Amplify
AWS Black Belt Online Seminar AWS Amplify
 
Migration to AWS part2
Migration to AWS part2Migration to AWS part2
Migration to AWS part2
 
Azure Site Recoveryで実現するDRとクラウドへの移行
Azure Site Recoveryで実現するDRとクラウドへの移行Azure Site Recoveryで実現するDRとクラウドへの移行
Azure Site Recoveryで実現するDRとクラウドへの移行
 
Cloud Days Tokyo 2015 "オンプレミス環境のクラウド化と運用を楽にする OpenStack ソリューション ~ハイブリッド・クラウドを...
Cloud Days Tokyo 2015 "オンプレミス環境のクラウド化と運用を楽にする OpenStack ソリューション ~ハイブリッド・クラウドを...Cloud Days Tokyo 2015 "オンプレミス環境のクラウド化と運用を楽にする OpenStack ソリューション ~ハイブリッド・クラウドを...
Cloud Days Tokyo 2015 "オンプレミス環境のクラウド化と運用を楽にする OpenStack ソリューション ~ハイブリッド・クラウドを...
 
cndjp: 「Microclimate」by capsmalt
cndjp: 「Microclimate」by capsmaltcndjp: 「Microclimate」by capsmalt
cndjp: 「Microclimate」by capsmalt
 

Recently uploaded

Recently uploaded (12)

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

アメブロの大規模システム刷新とそれを支えるSpring.