Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

APIMeetup 20170329_ichimura

437 views

Published on

API Meetup でのスライドです。

Published in: Technology
  • Be the first to comment

APIMeetup 20170329_ichimura

  1. 1. Pivotalが推進するAPIとプラットフォーム の活用 Tomohiro Ichimura, Pivotal 2017/3/29
  2. 2. 自己紹介 市村 友寛! Pivotal ジャパン株式会社! Cloud Foundry, GemFire, Spring, …! tichimura@pivotal.io!
  3. 3. Pivotalとは •  2013年4月にEMC, ヴイエムウェアおよびGE出資のもと設立! •  従業員2,000名, 法人顧客1,500社以上! •  オープンなクラウド, ビッグデータプラットフォーム製品の提供、! およびアジャイル手法を軸とした次世代アプリケーション開発を推進! Pivotal Cloud Foundry! Pivotal Big Data Suite! Pivotal Labs!
  4. 4. How Pivotal Can Help 幅広い選択肢の提供 Languages Clouds Platform Services OSes MySQL Dynatrace AppMon Spring Cloud Services Single Sign On 開発者との協業 Language Frameworks & Application Services Language Buildpacks for Staging & Packaging Self-Service and Role-Based Access Control Container SSH, Loggregator, Metrics Build Project Management Test Manage API Driven Platform, Concourse, Jenkins Apps Manager, CLI, REST APIs, Ops Manager Metrics, AppDynamics, Dynatrace, New Relic Pivotal Tracker
  5. 5. Pivotal Open  Source   https://pivotal.io/open-­‐source  
  6. 6. Circle of Code
  7. 7. Circle  of  Code   ! ! ! ! ! !
  8. 8. Circle  of  Code   ! ! ! ! ! !
  9. 9. Circle  of  Code   ! ! !! !
  10. 10. Circle  of  Code   ! ! ! ! ! !
  11. 11. Circle  of  Code   ! ! ! ! ! !
  12. 12. Circle  of  Code   ! ! ! ! ! ! https://www.youtube.com/watch?v=7APZD0me1nU Pivotal Cloud Foundry Overview — Onsi Fakhouri
  13. 13. Circle  of  Code  for  You   ! ! ! ! ! ! Redmine, Jira, PivotalTracker,…! Node.js, golang, php, Java,…! Jenkins, TeamCity, CircleCI, Concourse, …! Docker, Kubernetes, Vagrant, CloudFormation, Cloud Foundry ! Syslog, Metrics, Analytics, ML, DL, AI, …!
  14. 14. Circle  of  Code  with  Pivotal   Pivotal Tracker! Spring Framework!Pivotal Cloud Foundry! Concourse! PCF Data Service! Pivotal Big Data Suite! Spring Cloud Services!
  15. 15. Pivotal Labs
  16. 16. A Day In The Life At Pivotal Labs https://www.youtube.com/watch?v=5h-zsDXQH_8
  17. 17. ●  2015 9 2016 1 Pivotal Labs 4-5 (Pivotal Labs ) ●  , , , , , , SI, Web ●  ●  Web API IoT ●  PaaS (Pivotal Cloud Foundry) ●  ●  Labs Pivotal Labs Tokyo T O K Y O
  18. 18. Circle  of  Code   ! ! ! ! ! ! !
  19. 19.   ! ( )! ! ( )!
  20. 20. Pivotal Tracker
  21. 21. Pivotal  Tracker   Ÿ  SaaS   Ÿ  10  ( )   Ÿ  ( )   Ÿ  Cloud  Foundry         https://www.pivotaltracker.com  
  22. 22. 30   ,  30     Ÿ  Cloud  Foundry   Ÿ  PM   Ÿ  PM ( )   Ÿ  PM   Ÿ      23
  23. 23. (Story)   Save ! ここをクリック
  24. 24. Pivotal  Tracker   Dev/Designer!Prd.M! UI API !
  25. 25. API  Token   https://www.pivotaltracker.com/profile   ここに表示されるもの
  26. 26. API   ! function executeTrackerApiFetch() {! // get parameters! var token = $('#token').val();! projectId = $('#project_id').val();! ! // compose request URL! var url = 'https://www.pivotaltracker.com/services/v5';! url += '/projects/' + projectId;! url += '/stories?filter=state:delivered,finished,rejected,started';! url += ',unstarted,unscheduled';! url += '&limit=20';! ! // do API request to get story names! $.ajax({! url: url,! beforeSend: function(xhr) {! xhr.setRequestHeader('X-TrackerToken', token);! }! }).done(displayTrackerApiResponse);! }! trackerdemo.cfapps.io https://www.pivotaltracker.com/help/api/#Browser_Exampleから抜粋 $ mkdir trackerdemo; touch Staticfile! $ vi index.html # URL ! $ cf push trackerdemo –b staticfile_buildpack!
  27. 27. Pivotal  Tracker GitHub   トークンの 入力 click Settings > Integration & Services > Services
  28. 28. Circle  of  Code   ! ! !! !
  29. 29. Spring Framework
  30. 30. Spring ?     Ÿ  #1   Java     Ÿ  Apache  2.0     Ÿ    Ÿ    Ÿ  100   Ÿ  Netflix Fortune  2000   Ÿ  Spring  Boot  
  31. 31. Spring Boot は、それはもう、人気です 0 2,000,000 4,000,000 6,000,000 8,000,000 10,000,000 12,000,000 source: oss.sonatype.org Monthly Maven Downloads 10.3M Spring Boot Auto Configure POM Starters Quick Start Actuator Dev Tools $ java –jar myapp.jar
  32. 32. Spring Cloud – マイクロサービス・アーキテクチャを推進 Common Patterns for Distributed, Cloud Based Enterprise Applications Designed for disposable infrastructure in partnership with Netflix Spring Cloud SleuthSpring Cloud Bus Spring Cloud Cluster Spring Cloud Security Spring Cloud Config Spring Cloud Netflix Spring Cloud for AWS Spring Cloud Connectors Spring Cloud Zookeeper Spring Cloud Task Spring Cloud Consul Spring Cloud Data Flow
  33. 33. Spring Cloud ! ! ! ! ! ! ! ! ! ( )!
  34. 34. Steeltoe   Cloud Native .NET Applications - Friend of Spring Boot, Spring Cloud, and Cloud Foundry http://steeltoe.io/
  35. 35. API  
  36. 36. API   git! Tracker! Tracker API token! commit API ! (webhook)! $ git commit -m ”[Finished #135113059] this story is finished."! Finished api ! ! commit ! “fixed”, “completed”, or “finished” -> “finished” / “delivers” -> “Delivered” !
  37. 37.  
  38. 38.  
  39. 39. Circle  of  Code   ! ! ! ! ! !
  40. 40. Concourse
  41. 41. 継続的インテグレーション、継続的デリバリの重要性 高品質なソフトウェアを俊敏かつ一貫性を持って展開 ⾃自動化されたビルド作業と 品質管理理(単体テスト、静的な コード分析、等) 環境依存のない ビルドされた内容の展開 コード変更更のコミット ⾃自動化された 統合テスト ⾃自動化と⼿手動のテスト   (アクセプタンス、性能、ロード) ダウンタイム無しの更更新 開発環境 テスト、アクセプタンス、 ステージング 本番環境 ⼯工程ツール群 43 ⾃自動化 ツールの統合と、テストのみな らず開発や展開のプロセスの⾃自 動化 スピード 粒粒度度の⼩小さいものを、より頻 繁にリリースすることで複雑 性の低減と市場展開を短縮化 品質 テストドリブン開発を採⽤用すること によるフィードバックループの短縮 化をはかり問題箇所をより短期間で 顕在化、より的確な対応が可能に 俊敏性 更更新内容をダウンタイムなく 定期的に展開することで、顧 客満⾜足度度の向上と市場展開の 短縮化
  42. 42. Cloud  Foundry CI/CD   •    •  IaaS,  OpenStack,  vSphere   •  Bosh,  stemcell,  Garden,  Docker   •  CF  app,  …   •    •    •  OSS/Pivotal  Cloud  Foundry  
  43. 43. Concourse   •  •  •  Job •  •  •  Build
  44. 44. Concourse   jobs(tasks) - name: integration plan: - aggregate: - get: integration-suite - get: controller passed: [controller-mysql, controller-postgres] - get: worker passed: [worker] - task: integration file: integration-suite/task.yml aggregate passed get put resources ! •  Git repo •  S3 Archive ( .tar.gz) •  Docker Image •  Bosh.io Release •  … ! •  put(インプットとなるリソースを定義) •  task(処理内容) •  get(アウトプット先となるリソースを定義)
  45. 45. Concourse   https://blog.altoros.com/concourse-ci-architecture-features-and-usage.html
  46. 46.   resources:! - name: git-repo-path! type: git! source:! uri: YOUR_GITHUB_REPOSITORY! ! - name: tracker-output! type: tracker-resource! source:! token: TRACKER_API_TOKEN! project_id: "TRACKER_PROJECT_ID"! tracker_url: https://www.pivotaltracker.com! ! resource_types:! - name: tracker-resource! type: docker-image! source:! repository: concourse/tracker-resource! ! jobs:! - name: deploy! plan:! - get: git-repo-path! - put: tracker-output! params:! repos:! - git-repo-path! fly!
  47. 47.   api! github! Pivotal! Tracker! Resource! (pivotaltracker)! Resource! (git)! JOB! (Unit Test)! api! !commit! ( )! ! git-> concourse -> pivotal tracker! API !( )!
  48. 48. Circle  of  Code   ! ! ! ! ! !
  49. 49. Startup Velocity Enterprise Reliability+
  50. 50.   API! deploy!code! Scale?! Service?! Server-less?! ! (Diego)! ! (Elastic Runtime)! ! (Service Broker)!
  51. 51. apigee !
  52. 52. API   Ÿ  Service  Registry   Ÿ  Circuit  Breaker   Ÿ  Config  Server   Ÿ  Load  Balancing   Ÿ  distributed  tracing   Ÿ  …  
  53. 53. Spring Cloud ! ! ! ! ! ! ! ! ! ( )!
  54. 54. core boot Cloud Services Service Registry Config Server Circuit Breaker Ops + PlatformDev Spring Cloud Services Netfix OSSをベースにクラウドネイティブなコンポーネント、セキュリティ、構成管理を提供
  55. 55. Service  Registry   •  サービスの検出は、URLではなく、サービスIDを利用 •  クライアント・サーバ側でのロードバランスの実施
  56. 56. Service  Registry   コード(@EnableDiscoveryClient) ダッシュボード画面
  57. 57. Config  Server   •  ローカルもしくはリモートのGitレポジトリを活用 •  環境や、サービス、システムに応じた構成が可能
  58. 58. Config  Server   コード 管理(git上での管理
  59. 59. Circuit  Breaker   •  フォールバックする上限を決定し、システムへの影響を最小限に抑える •  スマートにワークロードを調整し、問題のあるサービスを切り離す(切り戻す)
  60. 60. Circuit  Breaker   Code(@EnableCircuitBreaker) 管理ダッシュボード
  61. 61. Circle  of  Code:   ! ! ! ! ! !
  62. 62. Spring Cloud Sleuth + Zipkin
  63. 63. Zipkin  Server  
  64. 64. CLICK 200   https://www.slideshare.net/reshmi9k/implementing-microservices-tracing-with-spring-cloud-and-zipkin-spring-one
  65. 65.   https://www.slideshare.net/reshmi9k/implementing-microservices-tracing-with-spring-cloud-and-zipkin-spring-one
  66. 66. <dependencyManagement>              <dependencies>                      <dependency>                              <groupId>org.springframework.cloud</groupId>                              <artifactId>spring-­‐cloud-­‐dependencies</artifactId>                              <version>Brixton.SR4</version>                              <type>pom</type>                              <scope>import</scope>                      </dependency>              </dependencies>   </dependencyManagement>   <dependency>          <groupId>org.springframework.cloud</groupId>          <artifactId>spring-­‐cloud-­‐starter-­‐sleuth</artifactId>   </dependency>   Spring  Cloud  Sleuth  with  Maven  
  67. 67. SERVICE 1 /readtimeout REQUEST BOOM! SERVICE 2 REQUEST BOOM! REQUEST BOOM!
  68. 68. SPANS SENT TO COLLECTORS SPANS SENT TO COLLECTORS STORE IN DB APP APP UI QUERIES FOR TRACE INFO VIA API Zipkin  
  69. 69. <dependencyManagement>              <dependencies>                      <dependency>                              <groupId>org.springframework.cloud</groupId>                              <artifactId>spring-­‐cloud-­‐dependencies</artifactId>                              <version>Brixton.SR4</version>                              <type>pom</type>                              <scope>import</scope>                      </dependency>              </dependencies>   </dependencyManagement>   <dependency>          <groupId>org.springframework.cloud</groupId>          <artifactId>spring-­‐cloud-­‐starter-­‐zipkin</artifactId>   </dependency>   Spring  Cloud  Sleuth  Zipkin  with  Maven  
  70. 70. Circle  of  Code  with  Pivotal   Pivotal Tracker! Spring Framework!Pivotal Cloud Foundry! Concourse! PCF Data Service! Pivotal Big Data Suite! Spring Cloud Services!
  71. 71. Circle  of  Code:   ! ! ! ! ! ! !
  72. 72.   Pivotal Labs: ! ( ) ! ! !
  73. 73.   Ÿ  API   –  Pivotal  
  74. 74.   Ÿ  Spring    :   Spring     –  https://jsug.doorkeeper.jp/   Ÿ  Concourse  CI  Meetup   –  https://www.meetup.com/Concourse-­‐CI-­‐Tokyo-­‐Meetup/   Ÿ  Cloud  Foundry  Tokyo  Meetup   –  https://www.meetup.com/Cloud-­‐Foundry-­‐Tokyo-­‐Meetup/   Ÿ  Japan  Apache  GEODE  User  Group   –  https://j-­‐apache-­‐geode.doorkeeper.jp     https://pivotal-­‐japan.connpass.com  
  75. 75. ( )  Pivotal  Tracker  API   Ÿ  API(v5)   –  https://www.pivotaltracker.com/help/api#top   –  https://www.pivotaltracker.com/help/api/rest/v5#Introduction   Ÿ  Token   –  https://www.pivotaltracker.com/profile   Ÿ  pt  CLI(community)   –  https://rubygems.org/gems/pt  
  76. 76. ( )  Concourse  API   Ÿ  API(v1)   –  https://github.com/concourse/atc/blob/master/routes.go   Ÿ  Token   –  /api/v1/teams/:team_name/auth/token   ▪  :team_name main   ▪  fly  login   Ÿ  fly  CLI   –  http://concourse.ci/downloads.html  
  77. 77. ( )  Cloud  Foundy  API   Ÿ  UAA  API   –  https://docs.cloudfoundry.org/api/uaa/index.html   Ÿ  CC  API   –  v2:  https://apidocs.cloudfoundry.org/253(2.75.0)   –  v3:  http://v3-­‐apidocs.cloudfoundry.org/version/3.13.0/index.html   Ÿ  Token   –  UAA:  /oauth/token   ▪  https://docs.cloudfoundry.org/api/uaa/#password-­‐grant   Ÿ  cf  CLI   –  https://console.run.pivotal.io/tools  

×