SmartNews's
journey into microservices
Takumi Sakamoto
Livesense TechNight
2015.09.29
Takumi Sakamoto
@takus
News Delivery Pipelines
36 months ago
The first system is developed
Crawler
Analyzer
Indexer
On memory DB
API
Monolithic App
Social
Media
Article
Lists
12 months ago
Split crawlers
Crawler
Queue
Monolithic App
Analyzer
Indexer
On memory DB
API
https://medium.com/@takus/velocity-conference-2015-wrap-up-velocityconf-f3811e05f1e8
4 months ago
At Velocity Conference
2 months ago
Dive into the microservices world
Crawler
Kinesis
IndexerAnalyzer
Kinesis CloudSearch
Why microservices?
• A lot of different types of services are required for us
• crawler, image analyzer, content extractor ...
• Adapt to technical progress / market change
• every system should be replaceable
• Make developers happy :)
• avoid to maintain "legacy" "large" "monolithic"
• enable us to develop any languages
A part of microservices
Source A
Analyzer Indexer Search API
A
PhotoqualCaffe
Reporting
API
Gateway
Realtime
feedback
Image
Analysis
Extractor
Content
extraction
Source B
Search API
B
Ranking
algorithm
A/B test
Language
detecter
Crawling
Language
detection
Spark
Streaming
KPI
Dashboard
Admin
Operation
References (Japanese only)
Stream 処理と Offline 処理の統合
http://bit.ly/1VnQQao
スマートニュースの世界進出を支えるログ解析基盤
http://bit.ly/1MCOyBX
SmartNews の Webmining を支えるプラットフォーム
http://bit.ly/1RcVGqk
Journey into microservices
When you use microservices you have to work on
automated deployment,
monitoring,
dealing with failure,
eventual consistency,
and other factors that a distributed system introduces.
http://martinfowler.com/bliki/MicroservicePremium.html
Automated Deployment
with AWS CodeDeploy
Today's topic
Deployment is not easy
• Manage complexity
• multiple roles
• multiple environments
• auto scaling
• Avoid downtime
• JVM based applications doesn't support hot deploy
• Monitoring
• stop deployment if something wrong
• which instances are succeeded or failed
AWS CodeDeploy
http://www.slideshare.net/AmazonWebServices/aws-codedeploy-manage-deployment-complexity
2W1H configurations
http://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-steps.html
Where?How?What?
Deployment Flow
http://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-steps.html
What?
How?
Where?
What to Deploy?
• Prepare your "revision" archive
• appspec.yml
• application (WAR/JAR etc...)
• (optional) scripts
• register to ELB / deregister from ELB
• pre-compile assets
• waiting cache warmup
App Spec
How to Deploy?
Where to Deploy?
EC2 Tag / Auto Scaling Group
My favorites
• Simple, Fast, Flexible, Free
• Require small changes for current system
• Integration w/ AWS Auto Scaling
• deploy last successful revision to a new instance
• wait for registering ELB until finishing deployment
Pitfall
Exclusive lock is required :P
Deployment is skipped during scale-out
Automated Deployment
at SmartNews
Deployment pipelines
Slack notification
Role / Env / Version
Deployment status
Commits
Datadog monitoring
Datadog alerts
Manage alerts by DSL
Most of alerts are created automatically
Powered by airbnb/interferon
Docker for C++ apps
Towards future...
We’re hiring!!!
Join our journey into microservices
Site reliability engineer
Productivity engineer
Web application engineer
iOS/Android engineer
ML/NLP engineer
Ad engineer
http://about.smartnews.com/en/careers/
Wait for you @ SmartKitchen

SmartNews's journey into microservices