近藤美沙/MisaKondo/@_zoo
- 猿のアイコン愛用しているので、だいたいそれが目印です
- VoyageGroupという会社で、環境整備やっています
- 業務分野的にいうとアドテク系のチームにいます
- 好きな言語はもともとRuby、でしたが、最近Pythonも書いています
DevOpsはソフトウェア開発手法の一つ。 開発 (Development) と運用 (Operations) を組み合わせたかばん語であり、開発担当者と運用担当者が連携して協力する開発手法をさす。1
DevOps is a culture shift or a movement that encourages great communication and collaboration (aka teamwork) to foster building better-quality software more quickly with more reliability 2
DevOpsとは、リーン開発およびアジャイル開発の原則に基づくソフトウェア・デリバリーの手法です。 DevOpsでは、事業部門から、開発、品質保証、および運用に至るまでのすべての利害関係者が協力して、顧客から実際に寄せられたフィードバックに基づいてソフトウェアを提供することを目的としています。3
環境構築・開発作業・テスト・リリース作業を効率化しています
Infrastructure as code.
弊社では環境構築を自動化しています。 具体的には、Puppet4というツールを利用し、定義書(以下、Manifest)に従い自動で環境を構築するようにしています。
弊社ではPuppetのManifestをGitリポジトリ化し、レビュー体制を整えて管理しています。 具体的には、GitLab5というツールを利用し、管理しています。
- PHP5.3からPHP5.6にあげたい
- OpenSSLからLibreSSLに切り替えたい
- Jenkins欲しい
- ApacheからNginxに変更したい
- ApplicationのDocumentRoot変更したい
- Master=productionの構成
- Gitにはbranchがある
- GitLabにはMerge Requestの仕組みがある
- リポジトリをclone
- checkoutでbranch作成し、manifestの修正
- branchのmanifestで環境を構築(オンプレミスのサーバだと、pxebootから、AWSのサーバだとインスタンスを新たに作る)、検証
- 検証おわったら、Merge Request
- LGTMもらったら、masterにmerge
- Deploy
GitHub Flow
弊社では複数人の開発者がWebアプリケーションの開発をしています。 アプリケーションのソースコード管理には、GitHubを利用し、開発フローにはGitHub Flow6を採用しています。
- 仕様策定
- デザイン作成
- UnitTest
- BrowserTest
- サーバサイドエンジニア
- フロントエンドエンジニア
- デザイナー
- データサイエンティスト
- インフラエンジニア
- Localhost(例: 自分のMacで動いているVirtualBox,もしくはMac上で動いている環境)だと人にみせづらい
- 開発の度に複数人が動作確認できる環境を構築するのは手間
- サーバサイド×フロントエンド×デザイナーの共同作業
- branchである特定のprefixを付与すると、自動でVirtualHost7環境が作成される
- 開発者は、動作確認を他の人にもしてほしくなったら、GitHubに特定のブランチ名でpushすれば環境ができる
今回の資料はGitHubのPublicリポジトリで公開しています。
勉強会後にでも気になった部分や、質問などあれば、ISSUEで起票してくれると嬉しいです。
資料に対して、紹介したい事例とかある人がいれば、PullRequest大歓迎です。(自分得)
資料にtypo見つけたので、直してくれるとかも大歓迎です。
Footnotes
-
Puppetは、Rubyで作られている構成管理ツールです。 アプリケーション開発者には馴染みがないかもしれませんが、構成管理ツールとしてそれなりに有名ドコロです。 ↩
-
GitLabは、GitHubと同様の機能がほぼ実装されている、RoRで作られているOSSのsoftwareです。 弊社では機密情報はGitHubに配置しないというポリシーをとっているため、機密情報に関しては自前で建てたGitLabで管理しています。 ↩
-
GitHub Flowは、GitHubが実際に採用している開発フローです。 変更は常にレビューされ、Masterブランチは常にRelease Readyである、という**のもとのフローです。 弊社ではGitHub Flowを開発フローとして採用しています。 ↩
-
VirtualHostは1つのサーバで複数のドメインを運用する技術。 ↩