Your SlideShare is downloading. ×
0
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
DAE
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

DAE

3,169

Published on

Talk on PyCon China 2013

Talk on PyCon China 2013

Published in: Technology
0 Comments
35 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,169
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
108
Comments
0
Likes
35
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

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. 谢谢!

×