SlideShare ist ein Scribd-Unternehmen logo
1 von 33
How we spread out our service globally
by utilizing
AWS and open source software
2013/08/04(sun)
Takashi SOMEDA
染田 貴志
COSCUP 2013 Taipei
https://twitter.com/tksmd
Technology Evangelist at Nulab,Inc.
JAWS UG Kyoto Branch leader
About me
https://facebook.com/takashi.someda
Write tech articles about AWS, SCM
https://github.com/tksmd
COSCUP 2013 Taipei
Backlog is a project management tool that 1,800 companies use.
In addition to issue management feature, Backlog provides
• File sharing by WebDAV
• Git and Subversion repository hosting.
Visit http://backlogtool.com/tw/
920,000 users around the world draw wireframes, network
diagrams, UML, business plans and so on.
Cacoo provides basic functionality as a draw tool and powerful collaborative
features like
• Simultaneous Editing on same diagram by multiple users
• Integration with Google Services like Google Apps, Google Drive and Google+
Hangouts
Examples
COSCUP 2013 Taipei
User Growth of Cacoo
COSCUP 2013 Taipei
0
100,000
200,000
300,000
400,000
500,000
600,000
700,000
800,000
900,000
1,000,000
Oct,2010 Oct,2011 Oct,2012 Aug,2013
62,000
200,000
600,000
920,000
All
Japan
Overseas
Agenda
COSCUP 2013 Taipei
 Service Overview
 Real time collaboration
 Flexible Infrastructure by AWS
 Summary
Service Overview
http://www.flickr.com/photos/ancientsword/2856148716/
Service Components
COSCUP 2013 Taipei
Software Architecture
COSCUP 2013 Taipei
Real time Collaboration
http://www.flickr.com/photos/ian_munroe/3315718996/
Simultaneous Editing
COSCUP 2013 Taipei
BlazeDS client
COSCUP 2013 Taipei
http://livedocs.adobe.com/blazeds/1/blazeds_devguide/lcarch_2.html
BlazeDS server
COSCUP 2013 Taipei
http://livedocs.adobe.com/blazeds/1/blazeds_devguide/lcarch_3.html
Message flow between Cacoo Editors
COSCUP 2013 Taipei
Synchronize MessageDestination
COSCUP 2013 Taipei
Patch added to
flex.messaging.cluster.JGroupsCluster
flex.messaging.cluster.ClusterNode
Using custom MessageService extends
flex.messaging.services.MessageService
( can be configured in messaging-config.xml )
What message exchanged
COSCUP 2013 Taipei
http://www.flickr.com/photos/dps/7161557/
Command
Command Execution Model
COSCUP 2013 Taipei
1.add 1.add1.add
2.move
Undomoveadd
1.add
2.zoom
zoom …
Command Interface
COSCUP 2013 Taipei
public class Command implements IExternalizable {
public var sequenceNo:uint = 0;
public var isLocal:Boolean = true;
public function Command() {
}
public function execute():void {
}
public function undo():void {
}
public function redo():void {
execute();
}
:
}
/*
sequenceNo keeps the order of commands to be
executed in each editors.
isLocal is used to distinguish that the command is
created on local editor or it is received from other
editor.
*/
# of Saved Commands
COSCUP 2013 Taipei
430,749,991
Partition on different tablespaces
COSCUP 2013 Taipei
create table command_01 ( LIKE command INCLUDING INDEXES INCLUDING DEFAULTS
INCLUDING CONSTRAINTS,
CHECK (diagram_id % 4 = 0)
) INHERITS (command) TABLESPACE tblspc_01;
ALTER TABLE command_01_pkey set tablespace tblspc_01;
Flexible Infrastructure by AWS
http://www.flickr.com/photos/naturegeak/5688437941/
Cacoo for Google+ Hangouts
COSCUP 2013 Taipei
http://launch-hangouts.cacoo.com/lp-zh_tw.html
We had only one month
COSCUP 2013 Taipei
beginning of March 2012
Cacoo became a candidate of the 3rd party app
announced on Hangouts API launch
28th Mar. 2012
Cacoo for Google+ Hangouts launched
Need to
 Develop application
 Do performance testing estimating 10-20 times accesses than
that of cacoo.com at that time
 Prepare 10+ Servers for performance testing and new
production environment
Simplify server operations
COSCUP 2013 Taipei
@task
def add_app(zone):
ec2 = connect_ec2()
ami = ec2.get_image(AMI_ID['app'])
r = ami.run(min_count=1, max_count=1,
key_name=KEY_NAME, user_data=load_cloudinit_script(),
security_groups=['app’],instance_type=INSTANCE_TYPE['app'],
block_device_map=create_block_device_map(),
placement=zone, instance_initiated_shutdown_behavior='stop')
instance = r.instances[0]
wait_for_startup(instance)
execute(”setup_app", hosts=[instance.public_dns_name])
execute(”update_hosts", roles=['all'])
execute(”start_app", hosts=[instance.public_dns_name])
execute(“update_nginx_upstream”)
$ fab add_app:zone=us-west-1a
# fabric and boto
# http://fabfile.org
# http://docs.pythonboto.org/
Tipping Point Example #1
COSCUP 2013 Taipei
Tipping Point Example #2
COSCUP 2013 Taipei
What we did for those growth
COSCUP 2013 Taipei
# For example1
$ ec2addsnap
$ ec2addvol –snapshot <snap_id> –s 1024G
$ ec2attvol
# For example2
$ ec2run
CloudFront for SWF distribution
COSCUP 2013 Taipei
Loading SWF is 10+ times faster
Summary
http://www.flickr.com/photos/nauright/2662160957/
OSS and AWS enable us
COSCUP 2013 Taipei
To fit the infrastructure according to the growth
To make it available to use all over the world
To make realize the key features quickly
COSCUP 2013 Taipei
Thanks!!
Q and A

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Steering the Course with Helm
Steering the Course with HelmSteering the Course with Helm
Steering the Course with Helm
 
Flink Jobs Deployment On Kubernetes
Flink Jobs Deployment On KubernetesFlink Jobs Deployment On Kubernetes
Flink Jobs Deployment On Kubernetes
 
Hydrosphere.io for ODSC: Webinar on Kubeflow
Hydrosphere.io for ODSC: Webinar on KubeflowHydrosphere.io for ODSC: Webinar on Kubeflow
Hydrosphere.io for ODSC: Webinar on Kubeflow
 
Airflow at WePay
Airflow at WePayAirflow at WePay
Airflow at WePay
 
Continuous Delivery for Kubernetes Apps with Helm and ChartMuseum
Continuous Delivery for Kubernetes Apps with Helm and ChartMuseumContinuous Delivery for Kubernetes Apps with Helm and ChartMuseum
Continuous Delivery for Kubernetes Apps with Helm and ChartMuseum
 
Thinking One Step Further with Time-saving DevOps Tools with Open Telekom Clo...
Thinking One Step Further with Time-saving DevOps Tools with Open Telekom Clo...Thinking One Step Further with Time-saving DevOps Tools with Open Telekom Clo...
Thinking One Step Further with Time-saving DevOps Tools with Open Telekom Clo...
 
Helm - the Better Way to Deploy on Kubernetes - Reinhard Nägele - Codemotion...
 Helm - the Better Way to Deploy on Kubernetes - Reinhard Nägele - Codemotion... Helm - the Better Way to Deploy on Kubernetes - Reinhard Nägele - Codemotion...
Helm - the Better Way to Deploy on Kubernetes - Reinhard Nägele - Codemotion...
 
What's Coming in Apache Airflow 2.0 - PyDataWarsaw 2019
What's Coming in Apache Airflow 2.0 - PyDataWarsaw 2019What's Coming in Apache Airflow 2.0 - PyDataWarsaw 2019
What's Coming in Apache Airflow 2.0 - PyDataWarsaw 2019
 
ОЛЕГ МАЦЬКІВ «Crash course on Operator Framework» Lviv DevOps Conference 2019
ОЛЕГ МАЦЬКІВ «Crash course on Operator Framework» Lviv DevOps Conference 2019ОЛЕГ МАЦЬКІВ «Crash course on Operator Framework» Lviv DevOps Conference 2019
ОЛЕГ МАЦЬКІВ «Crash course on Operator Framework» Lviv DevOps Conference 2019
 
Kubernetes Application Deployment with Helm - A beginner Guide!
Kubernetes Application Deployment with Helm - A beginner Guide!Kubernetes Application Deployment with Helm - A beginner Guide!
Kubernetes Application Deployment with Helm - A beginner Guide!
 
Kubeflow repos
Kubeflow reposKubeflow repos
Kubeflow repos
 
Intro to Helm for Kubernetes
Intro to Helm for KubernetesIntro to Helm for Kubernetes
Intro to Helm for Kubernetes
 
Updating Kubernetes With Helm Charts: Build, Test, Deploy with Codefresh and...
 Updating Kubernetes With Helm Charts: Build, Test, Deploy with Codefresh and... Updating Kubernetes With Helm Charts: Build, Test, Deploy with Codefresh and...
Updating Kubernetes With Helm Charts: Build, Test, Deploy with Codefresh and...
 
PR workflow
PR workflowPR workflow
PR workflow
 
Helm chart-introduction
Helm chart-introductionHelm chart-introduction
Helm chart-introduction
 
What is CF
What is CFWhat is CF
What is CF
 
Introduction to Terraform and Google Cloud Platform
Introduction to Terraform and Google Cloud PlatformIntroduction to Terraform and Google Cloud Platform
Introduction to Terraform and Google Cloud Platform
 
Provision GCP resources using Terraform @ GDG Craiova
Provision GCP resources using Terraform @ GDG CraiovaProvision GCP resources using Terraform @ GDG Craiova
Provision GCP resources using Terraform @ GDG Craiova
 
Knative And Pivotal Function As a Service
Knative And Pivotal Function As a ServiceKnative And Pivotal Function As a Service
Knative And Pivotal Function As a Service
 
GCPUG.TW - GCP學習資源分享
GCPUG.TW - GCP學習資源分享GCPUG.TW - GCP學習資源分享
GCPUG.TW - GCP學習資源分享
 

Andere mochten auch

大企業、未踏ソフトウェア、起業 様々な働き方から学んだ「モノ作り」のエッセンス
大企業、未踏ソフトウェア、起業  様々な働き方から学んだ「モノ作り」のエッセンス大企業、未踏ソフトウェア、起業  様々な働き方から学んだ「モノ作り」のエッセンス
大企業、未踏ソフトウェア、起業 様々な働き方から学んだ「モノ作り」のエッセンス
Takashi Someda
 

Andere mochten auch (8)

大企業、未踏ソフトウェア、起業 様々な働き方から学んだ「モノ作り」のエッセンス
大企業、未踏ソフトウェア、起業  様々な働き方から学んだ「モノ作り」のエッセンス大企業、未踏ソフトウェア、起業  様々な働き方から学んだ「モノ作り」のエッセンス
大企業、未踏ソフトウェア、起業 様々な働き方から学んだ「モノ作り」のエッセンス
 
Basic architecuture and operation concept of Backlog and Cacoo
Basic architecuture and operation concept of Backlog and CacooBasic architecuture and operation concept of Backlog and Cacoo
Basic architecuture and operation concept of Backlog and Cacoo
 
「どうすれば価値を生み出すか」を知るために ヌーラボで行っていること 〜 落ち穂拾い 〜
「どうすれば価値を生み出すか」を知るために ヌーラボで行っていること 〜 落ち穂拾い 〜「どうすれば価値を生み出すか」を知るために ヌーラボで行っていること 〜 落ち穂拾い 〜
「どうすれば価値を生み出すか」を知るために ヌーラボで行っていること 〜 落ち穂拾い 〜
 
Service Configuration Management for Rapid Growth
Service Configuration Management for Rapid GrowthService Configuration Management for Rapid Growth
Service Configuration Management for Rapid Growth
 
Nulab's DevOps tool stack based on AWS
Nulab's DevOps tool stack based on AWSNulab's DevOps tool stack based on AWS
Nulab's DevOps tool stack based on AWS
 
Service Configuration Management for Rapid Growth - demo 10 steps to build pi...
Service Configuration Management for Rapid Growth - demo 10 steps to build pi...Service Configuration Management for Rapid Growth - demo 10 steps to build pi...
Service Configuration Management for Rapid Growth - demo 10 steps to build pi...
 
エバンジェリストの憂鬱
エバンジェリストの憂鬱エバンジェリストの憂鬱
エバンジェリストの憂鬱
 
JAWS-UG 三都物語 2014 今しか役に立たない EC2入門 2014夏
JAWS-UG 三都物語 2014 今しか役に立たない EC2入門 2014夏JAWS-UG 三都物語 2014 今しか役に立たない EC2入門 2014夏
JAWS-UG 三都物語 2014 今しか役に立たない EC2入門 2014夏
 

Ähnlich wie How we spread out our service globally by utilizing AWS and open source software ( COSCUP 2013)

Ähnlich wie How we spread out our service globally by utilizing AWS and open source software ( COSCUP 2013) (20)

Why Airflow? & What's new in Airflow 2.3?
Why Airflow? & What's new in Airflow 2.3?Why Airflow? & What's new in Airflow 2.3?
Why Airflow? & What's new in Airflow 2.3?
 
Automate the operation of your Oracle Cloud infrastructure v2.0
Automate the operation of your Oracle Cloud infrastructure v2.0Automate the operation of your Oracle Cloud infrastructure v2.0
Automate the operation of your Oracle Cloud infrastructure v2.0
 
仕事ではじめる機械学習
仕事ではじめる機械学習仕事ではじめる機械学習
仕事ではじめる機械学習
 
Airflow techtonic template
Airflow   techtonic templateAirflow   techtonic template
Airflow techtonic template
 
Google Cloud Platform for Data Science teams
Google Cloud Platform for Data Science teamsGoogle Cloud Platform for Data Science teams
Google Cloud Platform for Data Science teams
 
Why and How SmartNews uses SaaS?
Why and How SmartNews uses SaaS?Why and How SmartNews uses SaaS?
Why and How SmartNews uses SaaS?
 
Let's build Developer Portal with Backstage
Let's build Developer Portal with BackstageLet's build Developer Portal with Backstage
Let's build Developer Portal with Backstage
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Google Cloud Platform (GCP) At a Glance
Google Cloud Platform (GCP)  At a GlanceGoogle Cloud Platform (GCP)  At a Glance
Google Cloud Platform (GCP) At a Glance
 
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
Elyra - a set of AI-centric extensions to JupyterLab Notebooks.
 
Exploring Google (Cloud) APIs & Cloud Computing overview
Exploring Google (Cloud) APIs & Cloud Computing overviewExploring Google (Cloud) APIs & Cloud Computing overview
Exploring Google (Cloud) APIs & Cloud Computing overview
 
Introduce Airflow.ppsx
Introduce Airflow.ppsxIntroduce Airflow.ppsx
Introduce Airflow.ppsx
 
What's New in Docker - February 2017
What's New in Docker - February 2017What's New in Docker - February 2017
What's New in Docker - February 2017
 
Tampere Technical University - Seminar Presentation in testind day 2016 - Sca...
Tampere Technical University - Seminar Presentation in testind day 2016 - Sca...Tampere Technical University - Seminar Presentation in testind day 2016 - Sca...
Tampere Technical University - Seminar Presentation in testind day 2016 - Sca...
 
Deploying Web Apps with PaaS and Docker Tools
Deploying Web Apps with PaaS and Docker ToolsDeploying Web Apps with PaaS and Docker Tools
Deploying Web Apps with PaaS and Docker Tools
 
[20200720]cloud native develoment - Nelson Lin
[20200720]cloud native develoment - Nelson Lin[20200720]cloud native develoment - Nelson Lin
[20200720]cloud native develoment - Nelson Lin
 
Put the Power of Cloud-based Modeling to Work - Spotlight Session
Put the Power of Cloud-based Modeling to Work - Spotlight SessionPut the Power of Cloud-based Modeling to Work - Spotlight Session
Put the Power of Cloud-based Modeling to Work - Spotlight Session
 
Spring boot microservice metrics monitoring
Spring boot   microservice metrics monitoringSpring boot   microservice metrics monitoring
Spring boot microservice metrics monitoring
 
Spring Boot - Microservice Metrics Monitoring
Spring Boot - Microservice Metrics MonitoringSpring Boot - Microservice Metrics Monitoring
Spring Boot - Microservice Metrics Monitoring
 
Hitchhiker's guide to Cloud-Native Build Pipelines and Infrastructure as Code
Hitchhiker's guide to Cloud-Native Build Pipelines and Infrastructure as CodeHitchhiker's guide to Cloud-Native Build Pipelines and Infrastructure as Code
Hitchhiker's guide to Cloud-Native Build Pipelines and Infrastructure as Code
 

Mehr von Takashi Someda (6)

AWS を活用して小さなチームで 世界で使われるサービスを運用する方法 - JAWS Days 2013
AWS を活用して小さなチームで 世界で使われるサービスを運用する方法 - JAWS Days 2013AWS を活用して小さなチームで 世界で使われるサービスを運用する方法 - JAWS Days 2013
AWS を活用して小さなチームで 世界で使われるサービスを運用する方法 - JAWS Days 2013
 
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
 
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
 
JAWS-UG Kyoto #02 LT
JAWS-UG Kyoto #02 LTJAWS-UG Kyoto #02 LT
JAWS-UG Kyoto #02 LT
 
AWS ではじめる Programmable Cloud
AWS ではじめる Programmable CloudAWS ではじめる Programmable Cloud
AWS ではじめる Programmable Cloud
 
Algo 23 MSTP
Algo 23 MSTPAlgo 23 MSTP
Algo 23 MSTP
 

Kürzlich hochgeladen

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Kürzlich hochgeladen (20)

04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 

How we spread out our service globally by utilizing AWS and open source software ( COSCUP 2013)

  • 1. How we spread out our service globally by utilizing AWS and open source software 2013/08/04(sun)
  • 2. Takashi SOMEDA 染田 貴志 COSCUP 2013 Taipei https://twitter.com/tksmd Technology Evangelist at Nulab,Inc. JAWS UG Kyoto Branch leader About me https://facebook.com/takashi.someda Write tech articles about AWS, SCM https://github.com/tksmd
  • 3.
  • 4. COSCUP 2013 Taipei Backlog is a project management tool that 1,800 companies use. In addition to issue management feature, Backlog provides • File sharing by WebDAV • Git and Subversion repository hosting. Visit http://backlogtool.com/tw/
  • 5. 920,000 users around the world draw wireframes, network diagrams, UML, business plans and so on. Cacoo provides basic functionality as a draw tool and powerful collaborative features like • Simultaneous Editing on same diagram by multiple users • Integration with Google Services like Google Apps, Google Drive and Google+ Hangouts
  • 7. User Growth of Cacoo COSCUP 2013 Taipei 0 100,000 200,000 300,000 400,000 500,000 600,000 700,000 800,000 900,000 1,000,000 Oct,2010 Oct,2011 Oct,2012 Aug,2013 62,000 200,000 600,000 920,000 All Japan Overseas
  • 8. Agenda COSCUP 2013 Taipei  Service Overview  Real time collaboration  Flexible Infrastructure by AWS  Summary
  • 14. BlazeDS client COSCUP 2013 Taipei http://livedocs.adobe.com/blazeds/1/blazeds_devguide/lcarch_2.html
  • 15. BlazeDS server COSCUP 2013 Taipei http://livedocs.adobe.com/blazeds/1/blazeds_devguide/lcarch_3.html
  • 16. Message flow between Cacoo Editors COSCUP 2013 Taipei
  • 17. Synchronize MessageDestination COSCUP 2013 Taipei Patch added to flex.messaging.cluster.JGroupsCluster flex.messaging.cluster.ClusterNode Using custom MessageService extends flex.messaging.services.MessageService ( can be configured in messaging-config.xml )
  • 18. What message exchanged COSCUP 2013 Taipei http://www.flickr.com/photos/dps/7161557/ Command
  • 19. Command Execution Model COSCUP 2013 Taipei 1.add 1.add1.add 2.move Undomoveadd 1.add 2.zoom zoom …
  • 20. Command Interface COSCUP 2013 Taipei public class Command implements IExternalizable { public var sequenceNo:uint = 0; public var isLocal:Boolean = true; public function Command() { } public function execute():void { } public function undo():void { } public function redo():void { execute(); } : } /* sequenceNo keeps the order of commands to be executed in each editors. isLocal is used to distinguish that the command is created on local editor or it is received from other editor. */
  • 21. # of Saved Commands COSCUP 2013 Taipei 430,749,991
  • 22. Partition on different tablespaces COSCUP 2013 Taipei create table command_01 ( LIKE command INCLUDING INDEXES INCLUDING DEFAULTS INCLUDING CONSTRAINTS, CHECK (diagram_id % 4 = 0) ) INHERITS (command) TABLESPACE tblspc_01; ALTER TABLE command_01_pkey set tablespace tblspc_01;
  • 23. Flexible Infrastructure by AWS http://www.flickr.com/photos/naturegeak/5688437941/
  • 24. Cacoo for Google+ Hangouts COSCUP 2013 Taipei http://launch-hangouts.cacoo.com/lp-zh_tw.html
  • 25. We had only one month COSCUP 2013 Taipei beginning of March 2012 Cacoo became a candidate of the 3rd party app announced on Hangouts API launch 28th Mar. 2012 Cacoo for Google+ Hangouts launched Need to  Develop application  Do performance testing estimating 10-20 times accesses than that of cacoo.com at that time  Prepare 10+ Servers for performance testing and new production environment
  • 26. Simplify server operations COSCUP 2013 Taipei @task def add_app(zone): ec2 = connect_ec2() ami = ec2.get_image(AMI_ID['app']) r = ami.run(min_count=1, max_count=1, key_name=KEY_NAME, user_data=load_cloudinit_script(), security_groups=['app’],instance_type=INSTANCE_TYPE['app'], block_device_map=create_block_device_map(), placement=zone, instance_initiated_shutdown_behavior='stop') instance = r.instances[0] wait_for_startup(instance) execute(”setup_app", hosts=[instance.public_dns_name]) execute(”update_hosts", roles=['all']) execute(”start_app", hosts=[instance.public_dns_name]) execute(“update_nginx_upstream”) $ fab add_app:zone=us-west-1a # fabric and boto # http://fabfile.org # http://docs.pythonboto.org/
  • 27. Tipping Point Example #1 COSCUP 2013 Taipei
  • 28. Tipping Point Example #2 COSCUP 2013 Taipei
  • 29. What we did for those growth COSCUP 2013 Taipei # For example1 $ ec2addsnap $ ec2addvol –snapshot <snap_id> –s 1024G $ ec2attvol # For example2 $ ec2run
  • 30. CloudFront for SWF distribution COSCUP 2013 Taipei Loading SWF is 10+ times faster
  • 32. OSS and AWS enable us COSCUP 2013 Taipei To fit the infrastructure according to the growth To make it available to use all over the world To make realize the key features quickly