第1页
Modern Web Development
In 2015
第2页
Modern Web Development
In 2015
Vũ Nguyễn vu.nguyen@will.vn
Liti Solutions
第3页
Agenda
1. A brief history of web development 2. Web development trends
• Architecture • Client • Server 3. Where to place your bet in 2015?
第4页
once upon a time…
第5页
<?php echo “Hey, a web server is talking to you !”; echo “How many {$item.name} do you want to buy?”
?> <form>
<input name=“your-name” /> <input name=“quantity” /> </form>
第6页
Then…
第7页
Then…
第8页
Then…
第9页
Then…
第10页
Then…
第11页
Modern Web Development
In 2015
第12页
2000
Architecture
Load Balancing Replication
Server Client
PHP ASP.NET
J2EE
HTML AJAX
Memcached Sharding
PHP ASP.NET Ruby on Rails Python
HTML AJAX
NoSQL Map/Reduce
NodeJs Ruby on Rails
Python
Single Page
MicroService Cloud Storage
NodeJs Golang
Isomorphic Offline Web App
第13页
Today web application
1. Blog, News 2. Social Network: Facebook, Pinterest, Koding 3. Collaborating: Google Docs, Asana 4. Personal: Evernote, Sunrise calendar 5. Services: Parse, Firebase
第14页
Building a blog
1. Database 2. Server code 3. HTML & CSS 4. Enjoy !
第15页
Building a news service
1. Load balancing 2. Ads networks 3. Micro Service 4. Log manager 5. Monitoring
6. Tracking 7. Comment / chat system 8. Data processing 9. Static assets 10. Video streaming
第16页
Building a collaborating service?
第17页
SERVER WEB MOBILE
第18页
http://carlos.bueno.org/2014/11/cache.html
第19页
http://carlos.bueno.org/2014/11/cache.html
第20页
http://carlos.bueno.org/2014/11/cache.html
第21页
http://carlos.bueno.org/2014/11/cache.html
第22页
http://carlos.bueno.org/2014/11/cache.html
第23页
http://carlos.bueno.org/2014/11/cache.html
第24页
Server development trends In 2015
第25页
Server development in 2015
1. Trends • API • Real-time
2. NodeJs 3. Golang
第40页
Found
Starting stack
Trends
Twitter
Ruby on Rails
Write new services in Golang
https://blog.twitter.com/2015/handling-five-billion-sessions-a-day-inreal-time
Migrate performance-critical
Modern Web DevelopmentDropbox
Python
backends to Golang
https://blogs.dropbox.com/tech/2014/07/open-sourcing-our-go-
libraries/
GitLab
In 2015Ruby on Rails
Ruby on Rails
Partially use Golang
https://gitlab.com/gitlab-org/gitlab-git-http-server
Parse
Ruby on Rails
Golang
http://blog.parse.com/learn/how-we-moved-our-api-from-ruby-to-goand-saved-our-sanity/
Koding
NodeJs
Golang
https://www.quora.com/Why-did-Koding-switch-from-Node-js-to-Go
第41页
Why Golang?
1. Single binary deployment 2. Minimal language 3. Easy concurrency 4. Full development environment 5. Multi-arch build 6. Low-level interface
第42页
Client development trends In 2015
第43页
Client development in 2015
1. JavaScript • EcmaScript 2015 • TypeScript, Flow
2. Offline applications 3. Isomorphic applications 4. Mobile web
第44页
EcmaScript 1025
const sum = (list) => !list.length ?0 : (([head, tail]) => head + sum(tail)) (list);
console.log(sum([1,2,3,4]);
第45页
TypeScript
class Greeter<T> { greeting: T; constructor(message: T) { this.greeting = message; } greet() { return this.greeting; }
}
var greeter = new Greeter<string>("Hello, world");
第46页
Flow
// @flow function sum(a: int, b: int): int {
return a + b; }
第47页
Tools: Webpack & babel
1. Translate EcmaScript2015, Flow code to JavaScript 2. Organize client-side JavaScript in module 3. Live reload development
import { GitHub, Facebook } from “./module/api”
第48页
Isomorphic (Universal) JavaScript
1. Isomorphic JavaScript is the pattern of running JavaScript code on both server & client.
2. Take the best of both world • Optimize load time • Interactive, optimize bandwidth • SEO, screen reader
第52页
Offline Web Applications
1. Write your web apps as desktop apps 2. Be able to run offline 3. Communicate with server via REST API or web socket 4. How: HTML5 Offline API
第55页
Mobile web
1. Almost every user has a smartphone 2. Customize for small-screen experience 3. Touch, notifications 4. Be able to run offline
第56页
Client development in 2015
1. JavaScript • EcmaScript 2015 • TypeScript, Flow
2. Offline applications 3. Isomorphic applications 4. Mobile web
第57页
Where to place your bet In 2015
第58页
Where to place your bets in 2015?
PHP Ruby on Rails NodeJs Golang
Java EE ASP.NET Micro services Cloud storage
JavaScript
Isomorphic App (Universal)
Offline Web App
TypeScript, Flow
第59页
Where to place your bets in 2015?
PHP Ruby on Rails NodeJs Golang
Java EE ASP.NET Micro services Cloud storage
JavaScript
Isomorphic App (Universal)
Offline Web App
TypeScript, Flow
第60页
Modern Web Development In 2015