狠狠撸

狠狠撸Share a Scribd company logo
基于Clojure构建的
移动云平台
AVOS-庄晓丹
xzhuang@avos.com
13年6月23?日星期?日
对于我
? 6年的码农
? 淘宝干过三年的Java中间件
? ??目前在AVOS.com
? Twitter : @killme2008
? Weibo: @AVOS-dennis
? Github: killme2008
13年6月23?日星期?日
AVOS
13年6月23?日星期?日
AVOS
13年6月23?日星期?日
AVOS
13年6月23?日星期?日
AVOS
13年6月23?日星期?日
AVOS
13年6月23?日星期?日
AVOSCloud
? Parse.com 美国移动端云平台
? Facebook刚刚收购
? 我们的尝试:AVOSCloud
? 内部快速开发平台
? 对外开放?
13年6月23?日星期?日
有什么?用?
? 有什么?用?从有什么谈起:
? 数据管理 RESTFul service
? Push noti?cation
? Cloud code
? File storage
? Hosting?
13年6月23?日星期?日
数据管理
? Object的增删改查
? Relation映射
? ?一对?一
? ?一对多
? 复杂查询
13年6月23?日星期?日
? curl -X POST http://avoscloud.com/1/classes/Post -d ‘{“user”:
{“__type”:”Pointer”,”className”:”_User”,“objectId”:”xxxxxx”} ,“name” :
“dennis” }’
? Pointer,多对?一关系
? Relation, 多对多关系
13年6月23?日星期?日
推送服务
13年6月23?日星期?日
Cloud code
? 业务逻辑怎么办?
? 对象参数校验
? 计算分数
? 计数
? 排序
? http crawler etc.
? Cloud code: 采?用javascript编写业务逻辑
? 版本化管理
? ?自动部署
? ?日志
13年6月23?日星期?日
13年6月23?日星期?日
AVOSCloud
? 覆盖了parse.com 90%以上功能
? 做到API完全兼容
? 提供ios,android,javascript SDK
? 让开发移动app简单起来
13年6月23?日星期?日
?马上开放,敬请期待
13年6月23?日星期?日
Clojure在哪?里?
13年6月23?日星期?日
系统
13年6月23?日星期?日
服务端
13年6月23?日星期?日
Clojure在哪?里?
? API service: 提供REST API调?用,集成各?子系统
? clojure
? Push noti?cation: ios和android的通知推送服务
? clojure
? Cloud code
? nodejs
13年6月23?日星期?日
统计
? API service:
? 3500+ Clojure代码
? 176 Java代码
? Push service
? 273?行 Clojure代码
? 2个?人,2个月
13年6月23?日星期?日
框架
? Web MVC: compojure
? JSON: data.json
? mongodb: monger
? database: korma
? Logging: tools.logging
? Web server: ring,jetty
? Others: clj-http,clj-
time,environ,hooke,core.cache etc.
13年6月23?日星期?日
Why clojure?
? 不想?用Java:
? 对?比某项??目:3万?行Java代码, 900+?行XML
配置,部署测试极其痛苦
? 也许不公平,但是很说明问题
? 时间紧迫,配置、重启、繁琐的代码、
类、接?口、臃肿的分层......统统不要
? ?生命苦短,我?用Clojure
13年6月23?日星期?日
Why clojure?
? 你好,我好,?大家好:美味书签,美味
爱读,玩拍......
? 最最重要的是....
13年6月23?日星期?日
够酷:哥会Clojure
13年6月23?日星期?日
收获
? 轻松的编程?文化
? Clojure程序库都短?小精悍
? 易于理解
? 易于hack,按需定制。
? REPL,交互式编程
? 快速实验
? 减少测试代码
? 分层减少,代码减少,配置减少,减少脑细胞死亡。
13年6月23?日星期?日
13年6月23?日星期?日
收获
? 抛弃Java语?言,拥抱Java世界
? 你不必创造新的库
? 直接使?用
? 包装
? 扩展:macro,protocol
? 重?用程序结构,创造你的语?言
? ?无缝接?入扩展
13年6月23?日星期?日
收获
? 测试仍然必不可少
? 单元测试意义减弱
? 接?口测试任重道远
? ?无测试,不重构
13年6月23?日星期?日
收获
? Clojure世界也需要《重构》
? Clojure也有坏味道
? rename,extract function,move function...
? 抽象宏替代重复代码结构
? 使?用多重?方法替代条件语句
? 合并let语句
? 更多技巧,需要我们?一起探索总结。
13年6月23?日星期?日
收获
? 熟悉Clojure惯?用法
? ?用?一?门,爱?一?门
? 更短的代码
? 社区交流
? 最后,也许是性能
? 怎么熟悉?
? 多读:clojure.core,开源项??目
? 多写:快开通github帐号,加?入?一家使?用clojure的公
司。
13年6月23?日星期?日
收获
? 性能: 不要过早优化,以实际测试和pro?le为准
? 好消息:你?几乎不?用担?心
? Clojure?生成的字节码很?高效
? type hint,transient集合,uncheck运算等
? 坏消息:
? Clojure?生成的字节码不总是?高效:反射,不必要的转型等。
? 启动
? 不可变对象对GC的压?力,Java集合框架仍然需要放?入?工具箱。
? STM的代价,线程和锁仍然需要放在你的?工具箱。
? 好的Clojure程序员,?一定是好的Java程序员。
13年6月23?日星期?日
收获
? 公司:保质保量,完成了?工作
? 个?人:锤炼了技能,开阔了眼界
? 还有:我终于可以写个slide吹吹?水
13年6月23?日星期?日
13年6月23?日星期?日
??广告时间
? 我们在招聘?工程师
? 唯?一的要求是靠谱
? http://team.mei.fm/career
13年6月23?日星期?日

More Related Content

Viewers also liked (16)

闯补惫补多线程常见陷阱
闯补惫补多线程常见陷阱闯补惫补多线程常见陷阱
闯补惫补多线程常见陷阱
dennis zhuang
?
础惫颈补迟辞谤——轻量级表达式执行引擎
础惫颈补迟辞谤——轻量级表达式执行引擎础惫颈补迟辞谤——轻量级表达式执行引擎
础惫颈补迟辞谤——轻量级表达式执行引擎
dennis zhuang
?
础痴翱厂颁濒辞耻诲介绍——万象移动云平台
础痴翱厂颁濒辞耻诲介绍——万象移动云平台础痴翱厂颁濒辞耻诲介绍——万象移动云平台
础痴翱厂颁濒辞耻诲介绍——万象移动云平台
dennis zhuang
?
Ihome inaction 篇外篇之fp介绍
Ihome inaction 篇外篇之fp介绍Ihome inaction 篇外篇之fp介绍
Ihome inaction 篇外篇之fp介绍
dennis zhuang
?
CQL 实现
CQL 实现CQL 实现
CQL 实现
dennis zhuang
?
颁濒辞箩耻谤别概览
颁濒辞箩耻谤别概览颁濒辞箩耻谤别概览
颁濒辞箩耻谤别概览
dennis zhuang
?
颁濒辞箩耻谤别的魅力
颁濒辞箩耻谤别的魅力颁濒辞箩耻谤别的魅力
颁濒辞箩耻谤别的魅力
dennis zhuang
?
QCon - 一次 Clojure Web 编程实战
QCon - 一次 Clojure Web 编程实战QCon - 一次 Clojure Web 编程实战
QCon - 一次 Clojure Web 编程实战
dennis zhuang
?
我在 Mac 上的常用开发工具
我在 Mac 上的常用开发工具我在 Mac 上的常用开发工具
我在 Mac 上的常用开发工具
dennis zhuang
?
Clojure 1.8 Direct-Linking WWH
Clojure 1.8  Direct-Linking  WWHClojure 1.8  Direct-Linking  WWH
Clojure 1.8 Direct-Linking WWH
dennis zhuang
?
Nio trick and trap
Nio trick and trapNio trick and trap
Nio trick and trap
dennis zhuang
?
Java 与 CPU 高速缓存
Java 与 CPU 高速缓存Java 与 CPU 高速缓存
Java 与 CPU 高速缓存
dennis zhuang
?
Mesos intro
Mesos introMesos intro
Mesos intro
dennis zhuang
?
Elixir introd
Elixir introdElixir introd
Elixir introd
dennis zhuang
?
Erlang scheduler
Erlang schedulerErlang scheduler
Erlang scheduler
dennis zhuang
?
Hystrix 介绍
Hystrix 介绍Hystrix 介绍
Hystrix 介绍
dennis zhuang
?
闯补惫补多线程常见陷阱
闯补惫补多线程常见陷阱闯补惫补多线程常见陷阱
闯补惫补多线程常见陷阱
dennis zhuang
?
础惫颈补迟辞谤——轻量级表达式执行引擎
础惫颈补迟辞谤——轻量级表达式执行引擎础惫颈补迟辞谤——轻量级表达式执行引擎
础惫颈补迟辞谤——轻量级表达式执行引擎
dennis zhuang
?
础痴翱厂颁濒辞耻诲介绍——万象移动云平台
础痴翱厂颁濒辞耻诲介绍——万象移动云平台础痴翱厂颁濒辞耻诲介绍——万象移动云平台
础痴翱厂颁濒辞耻诲介绍——万象移动云平台
dennis zhuang
?
Ihome inaction 篇外篇之fp介绍
Ihome inaction 篇外篇之fp介绍Ihome inaction 篇外篇之fp介绍
Ihome inaction 篇外篇之fp介绍
dennis zhuang
?
颁濒辞箩耻谤别概览
颁濒辞箩耻谤别概览颁濒辞箩耻谤别概览
颁濒辞箩耻谤别概览
dennis zhuang
?
颁濒辞箩耻谤别的魅力
颁濒辞箩耻谤别的魅力颁濒辞箩耻谤别的魅力
颁濒辞箩耻谤别的魅力
dennis zhuang
?
QCon - 一次 Clojure Web 编程实战
QCon - 一次 Clojure Web 编程实战QCon - 一次 Clojure Web 编程实战
QCon - 一次 Clojure Web 编程实战
dennis zhuang
?
我在 Mac 上的常用开发工具
我在 Mac 上的常用开发工具我在 Mac 上的常用开发工具
我在 Mac 上的常用开发工具
dennis zhuang
?
Clojure 1.8 Direct-Linking WWH
Clojure 1.8  Direct-Linking  WWHClojure 1.8  Direct-Linking  WWH
Clojure 1.8 Direct-Linking WWH
dennis zhuang
?
Java 与 CPU 高速缓存
Java 与 CPU 高速缓存Java 与 CPU 高速缓存
Java 与 CPU 高速缓存
dennis zhuang
?

Similar to Avoscloud 2 (20)

My DevOps Tour 0.1
My DevOps Tour 0.1My DevOps Tour 0.1
My DevOps Tour 0.1
Chu-Siang Lai
?
Artifacts management with CI and CD
Artifacts management with CI and CDArtifacts management with CI and CD
Artifacts management with CI and CD
Chen-Tien Tsai
?
使用骋辞辞驳濒别础辫辫贰苍驳颈苍别建立个人信息中心
使用骋辞辞驳濒别础辫辫贰苍驳颈苍别建立个人信息中心使用骋辞辞驳濒别础辫辫贰苍驳颈苍别建立个人信息中心
使用骋辞辞驳濒别础辫辫贰苍驳颈苍别建立个人信息中心
Du Yamin
?
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
Will Huang
?
链家网存储架构变迁,吕毅
链家网存储架构变迁,吕毅链家网存储架构变迁,吕毅
链家网存储架构变迁,吕毅
毅 吕
?
MBaaS
MBaaSMBaaS
MBaaS
aikko
?
如何,高效利用搜索引擎+构建网络工具箱
如何,高效利用搜索引擎+构建网络工具箱如何,高效利用搜索引擎+构建网络工具箱
如何,高效利用搜索引擎+构建网络工具箱
84zhu
?
Appium手机自动化测试 testerhome_bqcon版本
Appium手机自动化测试 testerhome_bqcon版本Appium手机自动化测试 testerhome_bqcon版本
Appium手机自动化测试 testerhome_bqcon版本
延胜 黄
?
App house
App houseApp house
App house
Fred Chien
?
Global Azure Bootcamp 2015 Taichung : Mobile service
Global Azure Bootcamp 2015 Taichung : Mobile serviceGlobal Azure Bootcamp 2015 Taichung : Mobile service
Global Azure Bootcamp 2015 Taichung : Mobile service
Ian Chen
?
SITCON 2019 - 誰說工程師一定爆肝!一起走入雲端世界吧
SITCON 2019 - 誰說工程師一定爆肝!一起走入雲端世界吧SITCON 2019 - 誰說工程師一定爆肝!一起走入雲端世界吧
SITCON 2019 - 誰說工程師一定爆肝!一起走入雲端世界吧
scott liao
?
Appium手机自动化测试 tester home公开课
Appium手机自动化测试 tester home公开课Appium手机自动化测试 tester home公开课
Appium手机自动化测试 tester home公开课
lihuazhang
?
Global Azure Bootcamp 2015 at Study4
Global Azure Bootcamp 2015 at Study4Global Azure Bootcamp 2015 at Study4
Global Azure Bootcamp 2015 at Study4
Kyle Shen
?
2013 輔大資工 暑期宅學營 PhoneGap 跨平台任我玩,HTML5 無痛開發 App
2013 輔大資工 暑期宅學營  PhoneGap  跨平台任我玩,HTML5 無痛開發 App2013 輔大資工 暑期宅學營  PhoneGap  跨平台任我玩,HTML5 無痛開發 App
2013 輔大資工 暑期宅學營 PhoneGap 跨平台任我玩,HTML5 無痛開發 App
Huang-I Yang
?
2014-0430 when andro meets android - android taipei
2014-0430 when andro meets android - android taipei2014-0430 when andro meets android - android taipei
2014-0430 when andro meets android - android taipei
Andro Chen Chun-An
?
COSCUP 2016 Laravel 部署工作坊 - 部署指南
COSCUP 2016 Laravel 部署工作坊 - 部署指南COSCUP 2016 Laravel 部署工作坊 - 部署指南
COSCUP 2016 Laravel 部署工作坊 - 部署指南
Shengyou Fan
?
2021 Net Conf Taiwan-初探 Azure Communication Service 讓 App 也有視訊、通話、即時聊天、簡訊和電話功能
2021 Net Conf Taiwan-初探 Azure Communication Service讓 App 也有視訊、通話、即時聊天、簡訊和電話功能2021 Net Conf Taiwan-初探 Azure Communication Service讓 App 也有視訊、通話、即時聊天、簡訊和電話功能
2021 Net Conf Taiwan-初探 Azure Communication Service 讓 App 也有視訊、通話、即時聊天、簡訊和電話功能
Alan Tsai
?
Using google appengine_1027
Using google appengine_1027Using google appengine_1027
Using google appengine_1027
Wei Sun
?
Using google appengine (2)
Using google appengine (2)Using google appengine (2)
Using google appengine (2)
Wei Sun
?
2018 beijing azure bootcamp-azure migration - 2018 北京 azure bootcamp azure 搬遷...
2018 beijing azure bootcamp-azure migration - 2018 北京 azure bootcamp azure 搬遷...2018 beijing azure bootcamp-azure migration - 2018 北京 azure bootcamp azure 搬遷...
2018 beijing azure bootcamp-azure migration - 2018 北京 azure bootcamp azure 搬遷...
Alan Tsai
?
Artifacts management with CI and CD
Artifacts management with CI and CDArtifacts management with CI and CD
Artifacts management with CI and CD
Chen-Tien Tsai
?
使用骋辞辞驳濒别础辫辫贰苍驳颈苍别建立个人信息中心
使用骋辞辞驳濒别础辫辫贰苍驳颈苍别建立个人信息中心使用骋辞辞驳濒别础辫辫贰苍驳颈苍别建立个人信息中心
使用骋辞辞驳濒别础辫辫贰苍驳颈苍别建立个人信息中心
Du Yamin
?
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
Will Huang
?
链家网存储架构变迁,吕毅
链家网存储架构变迁,吕毅链家网存储架构变迁,吕毅
链家网存储架构变迁,吕毅
毅 吕
?
如何,高效利用搜索引擎+构建网络工具箱
如何,高效利用搜索引擎+构建网络工具箱如何,高效利用搜索引擎+构建网络工具箱
如何,高效利用搜索引擎+构建网络工具箱
84zhu
?
Appium手机自动化测试 testerhome_bqcon版本
Appium手机自动化测试 testerhome_bqcon版本Appium手机自动化测试 testerhome_bqcon版本
Appium手机自动化测试 testerhome_bqcon版本
延胜 黄
?
Global Azure Bootcamp 2015 Taichung : Mobile service
Global Azure Bootcamp 2015 Taichung : Mobile serviceGlobal Azure Bootcamp 2015 Taichung : Mobile service
Global Azure Bootcamp 2015 Taichung : Mobile service
Ian Chen
?
SITCON 2019 - 誰說工程師一定爆肝!一起走入雲端世界吧
SITCON 2019 - 誰說工程師一定爆肝!一起走入雲端世界吧SITCON 2019 - 誰說工程師一定爆肝!一起走入雲端世界吧
SITCON 2019 - 誰說工程師一定爆肝!一起走入雲端世界吧
scott liao
?
Appium手机自动化测试 tester home公开课
Appium手机自动化测试 tester home公开课Appium手机自动化测试 tester home公开课
Appium手机自动化测试 tester home公开课
lihuazhang
?
Global Azure Bootcamp 2015 at Study4
Global Azure Bootcamp 2015 at Study4Global Azure Bootcamp 2015 at Study4
Global Azure Bootcamp 2015 at Study4
Kyle Shen
?
2013 輔大資工 暑期宅學營 PhoneGap 跨平台任我玩,HTML5 無痛開發 App
2013 輔大資工 暑期宅學營  PhoneGap  跨平台任我玩,HTML5 無痛開發 App2013 輔大資工 暑期宅學營  PhoneGap  跨平台任我玩,HTML5 無痛開發 App
2013 輔大資工 暑期宅學營 PhoneGap 跨平台任我玩,HTML5 無痛開發 App
Huang-I Yang
?
2014-0430 when andro meets android - android taipei
2014-0430 when andro meets android - android taipei2014-0430 when andro meets android - android taipei
2014-0430 when andro meets android - android taipei
Andro Chen Chun-An
?
COSCUP 2016 Laravel 部署工作坊 - 部署指南
COSCUP 2016 Laravel 部署工作坊 - 部署指南COSCUP 2016 Laravel 部署工作坊 - 部署指南
COSCUP 2016 Laravel 部署工作坊 - 部署指南
Shengyou Fan
?
2021 Net Conf Taiwan-初探 Azure Communication Service 讓 App 也有視訊、通話、即時聊天、簡訊和電話功能
2021 Net Conf Taiwan-初探 Azure Communication Service讓 App 也有視訊、通話、即時聊天、簡訊和電話功能2021 Net Conf Taiwan-初探 Azure Communication Service讓 App 也有視訊、通話、即時聊天、簡訊和電話功能
2021 Net Conf Taiwan-初探 Azure Communication Service 讓 App 也有視訊、通話、即時聊天、簡訊和電話功能
Alan Tsai
?
Using google appengine_1027
Using google appengine_1027Using google appengine_1027
Using google appengine_1027
Wei Sun
?
Using google appengine (2)
Using google appengine (2)Using google appengine (2)
Using google appengine (2)
Wei Sun
?
2018 beijing azure bootcamp-azure migration - 2018 北京 azure bootcamp azure 搬遷...
2018 beijing azure bootcamp-azure migration - 2018 北京 azure bootcamp azure 搬遷...2018 beijing azure bootcamp-azure migration - 2018 北京 azure bootcamp azure 搬遷...
2018 beijing azure bootcamp-azure migration - 2018 北京 azure bootcamp azure 搬遷...
Alan Tsai
?

Avoscloud 2