DAE
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

DAE

  • 2,432 views
Uploaded on

Talk on PyCon China 2013

Talk on PyCon China 2013

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,432
On Slideshare
2,429
From Embeds
3
Number of Embeds
1

Actions

Shares
Downloads
98
Comments
0
Likes
33

Embeds 3

http://www.linkedin.com 3

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