SlideShare uma empresa Scribd logo
1 de 35
Baixar para ler offline
基于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 notification
• 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 notification: 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⽇日星期⽇日
收获
• 性能: 不要过早优化,以实际测试和profile为准
• 好消息:你⼏几乎不⽤用担⼼心
• 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⽇日星期⽇日

Mais conteúdo relacionado

Destaque

Java多线程常见陷阱
Java多线程常见陷阱Java多线程常见陷阱
Java多线程常见陷阱dennis zhuang
 
Aviator——轻量级表达式执行引擎
Aviator——轻量级表达式执行引擎Aviator——轻量级表达式执行引擎
Aviator——轻量级表达式执行引擎dennis zhuang
 
AVOSCloud简介——万象移动云平台
AVOSCloud简介——万象移动云平台AVOSCloud简介——万象移动云平台
AVOSCloud简介——万象移动云平台dennis zhuang
 
Ihome inaction 篇外篇之fp介绍
Ihome inaction 篇外篇之fp介绍Ihome inaction 篇外篇之fp介绍
Ihome inaction 篇外篇之fp介绍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 WWHdennis zhuang
 
Java 与 CPU 高速缓存
Java 与 CPU 高速缓存Java 与 CPU 高速缓存
Java 与 CPU 高速缓存dennis zhuang
 

Destaque (16)

Java多线程常见陷阱
Java多线程常见陷阱Java多线程常见陷阱
Java多线程常见陷阱
 
Aviator——轻量级表达式执行引擎
Aviator——轻量级表达式执行引擎Aviator——轻量级表达式执行引擎
Aviator——轻量级表达式执行引擎
 
AVOSCloud简介——万象移动云平台
AVOSCloud简介——万象移动云平台AVOSCloud简介——万象移动云平台
AVOSCloud简介——万象移动云平台
 
Ihome inaction 篇外篇之fp介绍
Ihome inaction 篇外篇之fp介绍Ihome inaction 篇外篇之fp介绍
Ihome inaction 篇外篇之fp介绍
 
CQL 实现
CQL 实现CQL 实现
CQL 实现
 
Clojure概览
Clojure概览Clojure概览
Clojure概览
 
Clojure的魅力
Clojure的魅力Clojure的魅力
Clojure的魅力
 
QCon - 一次 Clojure Web 编程实战
QCon - 一次 Clojure Web 编程实战QCon - 一次 Clojure Web 编程实战
QCon - 一次 Clojure Web 编程实战
 
我在 Mac 上的常用开发工具
我在 Mac 上的常用开发工具我在 Mac 上的常用开发工具
我在 Mac 上的常用开发工具
 
Clojure 1.8 Direct-Linking WWH
Clojure 1.8  Direct-Linking  WWHClojure 1.8  Direct-Linking  WWH
Clojure 1.8 Direct-Linking WWH
 
Nio trick and trap
Nio trick and trapNio trick and trap
Nio trick and trap
 
Java 与 CPU 高速缓存
Java 与 CPU 高速缓存Java 与 CPU 高速缓存
Java 与 CPU 高速缓存
 
Mesos intro
Mesos introMesos intro
Mesos intro
 
Elixir introd
Elixir introdElixir introd
Elixir introd
 
Erlang scheduler
Erlang schedulerErlang scheduler
Erlang scheduler
 
Hystrix 介绍
Hystrix 介绍Hystrix 介绍
Hystrix 介绍
 

Semelhante a Avoscloud 2

Artifacts management with CI and CD
Artifacts management with CI and CDArtifacts management with CI and CD
Artifacts management with CI and CDChen-Tien Tsai
 
使用GoogleAppEngine建立个人信息中心
使用GoogleAppEngine建立个人信息中心使用GoogleAppEngine建立个人信息中心
使用GoogleAppEngine建立个人信息中心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
MBaaSaikko
 
如何,高效利用搜索引擎+构建网络工具箱
如何,高效利用搜索引擎+构建网络工具箱如何,高效利用搜索引擎+构建网络工具箱
如何,高效利用搜索引擎+构建网络工具箱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 serviceIan 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 Study4Kyle Shen
 
2013 輔大資工 暑期宅學營 PhoneGap 跨平台任我玩,HTML5 無痛開發 App
2013 輔大資工 暑期宅學營  PhoneGap  跨平台任我玩,HTML5 無痛開發 App2013 輔大資工 暑期宅學營  PhoneGap  跨平台任我玩,HTML5 無痛開發 App
2013 輔大資工 暑期宅學營 PhoneGap 跨平台任我玩,HTML5 無痛開發 AppHuang-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 taipeiAndro 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_1027Wei 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
 

Semelhante a Avoscloud 2 (20)

My DevOps Tour 0.1
My DevOps Tour 0.1My DevOps Tour 0.1
My DevOps Tour 0.1
 
Artifacts management with CI and CD
Artifacts management with CI and CDArtifacts management with CI and CD
Artifacts management with CI and CD
 
使用GoogleAppEngine建立个人信息中心
使用GoogleAppEngine建立个人信息中心使用GoogleAppEngine建立个人信息中心
使用GoogleAppEngine建立个人信息中心
 
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
 
链家网存储架构变迁,吕毅
链家网存储架构变迁,吕毅链家网存储架构变迁,吕毅
链家网存储架构变迁,吕毅
 
MBaaS
MBaaSMBaaS
MBaaS
 
如何,高效利用搜索引擎+构建网络工具箱
如何,高效利用搜索引擎+构建网络工具箱如何,高效利用搜索引擎+构建网络工具箱
如何,高效利用搜索引擎+构建网络工具箱
 
Appium手机自动化测试 testerhome_bqcon版本
Appium手机自动化测试 testerhome_bqcon版本Appium手机自动化测试 testerhome_bqcon版本
Appium手机自动化测试 testerhome_bqcon版本
 
App house
App houseApp house
App house
 
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
 
SITCON 2019 - 誰說工程師一定爆肝!一起走入雲端世界吧
SITCON 2019 - 誰說工程師一定爆肝!一起走入雲端世界吧SITCON 2019 - 誰說工程師一定爆肝!一起走入雲端世界吧
SITCON 2019 - 誰說工程師一定爆肝!一起走入雲端世界吧
 
Appium手机自动化测试 tester home公开课
Appium手机自动化测试 tester home公开课Appium手机自动化测试 tester home公开课
Appium手机自动化测试 tester home公开课
 
Global Azure Bootcamp 2015 at Study4
Global Azure Bootcamp 2015 at Study4Global Azure Bootcamp 2015 at Study4
Global Azure Bootcamp 2015 at Study4
 
2013 輔大資工 暑期宅學營 PhoneGap 跨平台任我玩,HTML5 無痛開發 App
2013 輔大資工 暑期宅學營  PhoneGap  跨平台任我玩,HTML5 無痛開發 App2013 輔大資工 暑期宅學營  PhoneGap  跨平台任我玩,HTML5 無痛開發 App
2013 輔大資工 暑期宅學營 PhoneGap 跨平台任我玩,HTML5 無痛開發 App
 
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
 
COSCUP 2016 Laravel 部署工作坊 - 部署指南
COSCUP 2016 Laravel 部署工作坊 - 部署指南COSCUP 2016 Laravel 部署工作坊 - 部署指南
COSCUP 2016 Laravel 部署工作坊 - 部署指南
 
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 也有視訊、通話、即時聊天、簡訊和電話功能
 
Using google appengine_1027
Using google appengine_1027Using google appengine_1027
Using google appengine_1027
 
Using google appengine (2)
Using google appengine (2)Using google appengine (2)
Using google appengine (2)
 
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 搬遷...
 

Avoscloud 2