DAE
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

DAE

on

  • 2,203 views

Talk on PyCon China 2013

Talk on PyCon China 2013

Statistics

Views

Total Views
2,203
Views on SlideShare
2,200
Embed Views
3

Actions

Likes
33
Downloads
97
Comments
0

1 Embed 3

http://www.linkedin.com 3

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

DAE Presentation Transcript

  • 1. DAE PyCon China 2013
  • 2. About Me • 洪强宁 / hongqn • 2002年开始接触Python • 2004年开始完全使⽤用Python⼯工 作 • 2006年加⼊入⾖豆瓣,现任⾸首席架 构师 • www.douban.com/people/ hongqn/ • hongqn@douban.com
  • 3. 议程 • DAE是什么 • 为什么要开发DAE • DAE的架构 • DAE的特点 • DAE的未来
  • 4. DAE是什么
  • 5. Douban Douban Adorable App Engineers Engine
  • 6. PaaS
  • 7. Platform as a Service (PaaS)
  • 8. Private Python PaaS
  • 9. Current State
  • 10. 427 apps 126 对外应⽤用
  • 11. bubbler.labs.douban.com
  • 12. m.douban.com
  • 13. douban.fm
  • 14. movie.douban.com
  • 15. group.douban.com
  • 16. code
  • 17. up
  • 18. 花名册
  • 19. 精灵宝钻
  • 20. …等等
  • 21. 每天处理 2.4 亿动态请求 5K 峰值 qps on 32 nodes
  • 22. 为什么要开发DAE
  • 23. 代码拆分 1 big svn repo (17万提交) 4602 git repo (2881 fork)
  • 24. 重⽤用基础设施 Proj A Proj B Proj C Proj D MySQL, BeansDB, Memcache, MQ …
  • 25. 简化新项⺫⽬目启动 $ dae create $ dae serve $ dae deploy
  • 26. 最佳实践对 每个app开箱即⽤用 分级上线 故障报告 持续集成 状态收集
  • 27. Scale SA 4
  • 28. DAE的架构
  • 29. app.yaml
  • 30. PyPI 镜像 pypi.douban.com pip-req.txt $ dae install flask
  • 31. Instance • web • • service • • gunicorn gunicorn + customized worker daemon • zookeeper
  • 32. 两级结构 Load Balancer (nginx) Gateway (nginx) fallback unix socket App (gunicorn) Node 1 Gateway (nginx) start App Starter App (gunicorn) Node 2 App Starter
  • 33. 资源池API • • • • • • • • • • mysql memcache doubandb, doubanfs moosefs beanstalkd cdn statsd + graphite mail elastic search irc waylife 监控API调⽤用
  • 34. DAE的特点
  • 35. Low Overhead • 资源分配 — 进程 • 资源隔离 — UNIX帐号 • 资源限制 — 外部监控
  • 36. Customizable • 每个应⽤用从模板⽣生成nginx配置 • 使⽤用 hook point 定制 • 或者只使⽤用⽣生成的 nginx 配置⽚片段
  • 37. ⾃自依赖 • 通过⼀一个应⽤用部署应⽤用 • 通过⼀一个应⽤用管理应⽤用 • ⼀一个应⽤用 scale 所有应⽤用 • ⼀一个应⽤用 serve 跨应⽤用的静态⽂文件 • DAE 的代码托管在⼀一个 DAE 应⽤用上
  • 38. greenify 已开源 github.com/douban/greenify gevent • 默认启⽤用 • ⽀支持⻓长连接,如 websocket • 节省内存 • 很多坑
  • 39. Service 是⼀一等公民 thriftclient 即将开源 • Thrift • 在线客户端⽣生成 • 依赖注册 • 升级通知
  • 40. 收集⼤大量状态数据
  • 41. 内置最佳实践 cfgpusher 即将开源 • 错误收集 - sentry • Code集成 • 在线 profile ⼯工具 • 打包发布 • 预发布环境 • 服务地址实时推送 • 持续集成 • 分级上线
  • 42. 曹娥已开源 github.com/douban/CaoE 不受限的Python环境 • 可⽤用C扩展 • 可⽤用 fork, subprocess, multiprocessing…
  • 43. DAE的未来
  • 44. ⾖豆瓣所有应⽤用的平台
  • 45. cgroups
  • 46. 离线⼤大数据计算
  • 47. 更好的 service 体系
  • 48. 跨 IDC
  • 49. QoS
  • 50. 公有云服务?
  • 51. 开源? 开源!
  • 52. 谢谢!