Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで

17
CKANプロジェクトのFork、環境構築、デプロイ、CIまで - さわって試して理解する、CKANの基本 - 2013/8/31 Code for Japan テクニカルチームミーティング Code for Japan 勉強会 テクニカルチーム 山田 直行

description

CKANプロジェクトの入門とデプロイ・CIなどの話題を扱いました

Transcript of Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで

Page 1: Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで

CKANプロジェクトのFork、環境構築、デプロイ、CIまで- さわって試して理解する、CKANの基本 -

2013/8/31 Code for Japan テクニカルチームミーティング Code for Japan 勉強会テクニカルチーム 山田 直行

Page 2: Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで

発表者について

• 山田 直行(やまだ なおゆき)インフラ寄りのソフトウェアエンジニア(DevOps - インフラ設計/サービス運用/負荷対策/運用自動化)

• 株式会社AMoAd勤務(サイバーエージェントから出向)

• ネットワーク広告の配信・管理システムの開発と運用

• 最近取り組んでいるのはRuby on RailsとAmazon Web Service

• AWS認定ソリューションアーキテクト アソシエイト

Page 3: Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで

アジェンダ

• CKANについてアプリケーション概要使われている技術

• CKANの環境構築とデプロイGitHubのプロジェクトからのForkAmazon EC2のサーバーへのデプロイ、公開

• 運用ツール継続的に開発するために:Jenkins(継続的インテグレーションツール)安定的に運用するために:Zabbix (サーバー負荷・死活監視ツール)

Page 4: Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで

CKANとは

Page 5: Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで

アプリケーション概要

• http://ckan.org

• Comprehensive Knowledge Archive Networkの略

• オープンソースのデータ管理プラットフォーム“データの分野におけるapt-getのような存在”を目指している

• Open Knowledge Foundationが中心となってメンテナンス

• カスタマイズされて多くの政府・行政機関・NGOなどで使われているhttp://ckan.org/instances/

• 日本語化はほぼ100%されていて、日本でのプロジェクトも

Page 6: Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで

世界中の多くのサイトで使われています

• ケース集http://ckan.org/instances/#

• 米国政府のデータポータルがCKANで再ローンチhttp://okfn.jp/2013/05/28/usdatagov-ckan/おそらくこれ http://catalog.data.gov/dataset

• オープンソースhttps://github.com/okfn/ckanhttp://docs.ckan.org/de/latest/index.html

Page 7: Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで

日本での動き

• CKAN日本語化プロジェクト | Linked Open Data Initiativehttp://linkedopendata.jp/?p=64

• ようこそ - CKAN日本語http://data.linkedopendata.jp/

• Facebookグループhttps://www.facebook.com/groups/327233017355370/

• ようこそ - ビッグデータ・オープンデータ活用推進協議会オープンデータポータルhttp://chiba-ckan.cloudapp.net/

Page 8: Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで

CKANについて:使われている技術

PythonPylons/Jinja2/Bootstrap

Apache

mod-wsgi

ウェブサーバー

アプリケーション

データベース Solr(+tomcat) PostgreSQL

sql alchemy

・リレーショナルデータベースの代表格のPostgreSQLと、高速な全文検索に優れるSolrとの使い分けをしている。全てオープンソースで、古すぎず新しすぎずの手堅いソフトウェア群で構成されている印象

Page 9: Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで

CKANの環境構築とデプロイ

• GitHubからプロジェクトをforkhttps://github.com/okfn/ckan↓https://github.com/chokkoyamada/ckan こちらを使う

• サーバー:Amazon EC2 small instanceを利用CentOS 6.3 AMI (仮想マシンのイメージ)

• ドキュメントに沿ってコマンドを打っていきセットアップhttps://github.com/okfn/ckan/wiki/How-to-install-CKAN-2.0-on-CentOS-6.3-(new)※developmentか、productionか、環境設定に注意

Page 10: Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで

起動させて公開設定

• http://ckan.kirishikistudios.com

• 固定IPアドレスを割り当て、そこにDNSのAレコードでドメインckan.kirishikistudios.comを割り当て

• ポートは80(HTTP)(グローバル)と22(SSH)(特定IPのみ)をオープン

Page 11: Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで

実際にサーバーを立ててみました

• http://ckan.kirishikistudios.com/適当にデータセットを追加したりしてデモします。

データの登録・閲覧

グループ機能、組織機能

検索API

ユーザー登録

グラフの描画

地図との連動

Page 12: Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで

運用:一連の流れを自動で

CKANサーバー

CIサーバー(Jenkins)監視サーバー(Zabbix)

Deploy

Pushor

Pull Request

Hook

MonitorTest

Merged

Page 13: Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで

運用ツール1:継続的に開発して更新する

• オープンソースのCI(継続的インテグレーション)ツール

• やれることは多岐にわたるが、主にアプリケーションの開発と運用の仲立ちを行い、定型的な作業の自動化とレポーティングを得意とする

• GitHubからのソース取得、自動テスト、デプロイ、バックアップ等、これ1つでできる

Page 14: Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで
Page 15: Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで

運用ツール2:安定的に運用する

• オープンソースのサーバー監視ツール

• 死活監視とパフォーマンス監視の両方の機能を備え、サーバー監視タスク一般をこれ1つで手広くこなせる

• アラートレベルと通知の方法をカスタマイズできるのに加え、障害時の自動一次対応を設定しておくことも可能

Page 16: Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで
Page 17: Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで

• CKANのプロジェクトをオフィシャルのGitHubレポジトリからForkしてきて自分のサーバーに環境を作るところまで行いました。

• クラウドサービスのAmazon Web Service(AWS)を使うと比較的簡単にサーバーの構築やDNSの設定を行うことができます。

• Jenkinsを使うとGitHubへのPushを検知して最新のソースコードをサーバーにデプロイするなどの任意のジョブを実行できます。

• Zabbixを使うとサーバーの監視が統合的に行えます。

• 参加・貢献しやすいプロジェクトの条件って?

• ウェブサービスを楽に安定して運用しつづけるためには?

まとめ