trends in platform and application architectures (enterprise apps world, london, june 17th 2014)
DESCRIPTION
Virtual machine technology revolutionized the use of infrastructure. Hypervisors are at the heart of today's leading infrastructure as a service (IaaS) offerings and are a core component of IaaS platforms. VMs are here for the long term but they are no longer a panacea for virtualization. We have squeezed all of the optimizations out of them and IaaS providers have been in price wars ever since. New container-based technology such as Docker, based on LXC (LinuX Containers), represents a more efficient model than traditional hypervisor virtualization and is poised for massive growth. This will change the way cloud platforms are architected, used, and sold, and how applications are deployed. Containers are well suited for modular API-first architectures in which purpose-built components can be provisioned and scaled on an as-needed basis. Node.js is a rapidly emerging server-side JavaScript technology that encourages a modular design. It also encourages a natural separation of the backend UI layer from the backend business logic of a modern web architecture, allowing frontend developers and backend developers to focus on what they do best in the languages and frameworks of their choice. Attendees of this session will learn about: Application Containers: Docker, LXC and the move toward micro-virtualization Modules: The rise of Node.js and API-first architectures UI Freedom: Separating the UI backend from the data backendTRANSCRIPT
Trends in platform and application architectures
Enterprise Apps World, London, June 17th 2014
Matt RobinsonVP TechnologyProgress Software
© 2014 Progress Software Corporation. All rights reserved.2
Three trends
Application containersLXC, Docker and the move toward micro-virtualization
ModulesThe rise of Node.js and API-first architectures
UI FreedomSeparating the UI backend from the data backend
© 2014 Progress Software Corporation. All rights reserved.3
Micro-virtualization
© 2014 Progress Software Corporation. All rights reserved.4
Benefits of Virtualization
Image from: https://www.chilli-it.co.uk/vmware-vsphere
© 2014 Progress Software Corporation. All rights reserved.5
Image from: http://www.virtualizemydc.ca/wp-content/uploads/2013/10/vm_11.gif
Benefits of Virtualization
© 2014 Progress Software Corporation. All rights reserved.6
Virtualization led to Infrastructure as a Service (IaaS)
© 2014 Progress Software Corporation. All rights reserved.7
The virtualization model has been squeezed
© 2014 Progress Software Corporation. All rights reserved.8
Micro-virtualization
© 2014 Progress Software Corporation. All rights reserved.9
Micro-virtualization
Image from: http://blog.trifork.com/wp-content/uploads/2013/07/Screenshot_from_docker.io_about.png
© 2014 Progress Software Corporation. All rights reserved.10
Leading cloud platforms have used micro-virtualization for years
© 2014 Progress Software Corporation. All rights reserved.11
Analyst recommendation
"Organizations looking to simplify application deployment and improve operational efficiency and infrastructure utilization should consider standardized containerization approaches such as Docker.”
Al Hilwa, IDC
© 2014 Progress Software Corporation. All rights reserved.12
Recommended reading
VMs -- The New Infrastructure AnachronismSimon Crosby
© 2014 Progress Software Corporation. All rights reserved.13
Node.js and API-first architectures
© 2014 Progress Software Corporation. All rights reserved.14
JavaScript is growing fast
Sources: http://www.sitepoint.com/best-programming-language-of-2013/ http://redmonk.com/jgovernor/2013/11/01/one-chart-that-tells-you-everything-you-need-to-know-about-github-going-mainstream/
© 2014 Progress Software Corporation. All rights reserved.15
What Is Node.js?
Node.js is a server-side runtime that compiles and executes JavaScript at high speeds
© 2014 Progress Software Corporation. All rights reserved.16
JavaScript is now a full-stack language
Source: http://www.toptal.com/javascript/guide-to-full-stack-javascript-initjs
JavaScript Frontend(jQuery, Boostrap, Angular.js, Backbone, Marionette, etc.)
JavaScript Backend(Node.js, Express, Socket.io, Mongoose, etc.)
JavaScript Database(NoSQL databases with JSON such as MongoDB, CouchDB, etc.)
© 2014 Progress Software Corporation. All rights reserved.17
Key JavaScript and Node.js Takeaways
• JavaScript usage is growing faster than any other language
• JavaScript is a ubiquitous language, well known by millions of developers
• Using Node.js, JavaScript is a fully-functional programming language
• Using Node.js, JavaScript is a full stack language
• Node.js has a fast-growing community and ecosystem
• Node.js is well-suited for APIs
• Node.js is well-suited for real-time, data-intensive apps
• Node.js is well-suited for IoT, wearables, and emergent devices
© 2014 Progress Software Corporation. All rights reserved.18
Node.js encourages modularized, API-first architectures
1. Write lots of tiny apps: Instead of putting a lot of logic into a single process, separate functionality into smaller independent components that talk to each other via APIs.
2. Fine-grained scalability and failover: By writing lots of tiny API-first apps, you can independently scale out each functional component and gracefully fail-over when one instance goes down or crashes.
3. Clean, extensible design: An API-based network boundary between functional components forces you to make state very explicit.
Reference: http://www.quora.com/What-are-some-best-architecture-practices-when-designing-a-nodejs-system
© 2014 Progress Software Corporation. All rights reserved.19
Node.js is a good fit for container-based deployment
VM-1
…Docker
Node.js Containers
VM-2Docker
VM-3Docker
Node.js Containers
VM-XDocker
VM-4Docker
Node.js Containers
OpenStack ComputeModulus Enterprise AdminModulus deploys Node.js applications to a dynamic set of virtual containers across a dynamic set of VMs
and load balances requests across them. Failover and auto-recovery are built into the platform.
Node.js Containers Node.js Containers
© 2014 Progress Software Corporation. All rights reserved.20
Node.js is a good fit for container-based deployment
VM-1
…Docker
Node.js Containers
VM-2Docker
VM-3Docker
Node.js Containers
VM-XDocker
VM-4Docker
Node.js Containers
OpenStack ComputeModulus Enterprise AdminModulus deploys Node.js applications to a dynamic set of virtual containers across a dynamic set of VMs
and load balances requests across them. Failover and auto-recovery are built into the platform.
Node.js Containers Node.js Containers
Deploy, load balance, failover, auto-recover
© 2014 Progress Software Corporation. All rights reserved.21
Node Adoption
“Velocity was the key driving point for PayPal's move to Node.js. We found it enabled a huge boost to our workflow allowing us to iterate faster and innovate more.”
–Jeff Harrel, Director of User Interface Engineering
© 2014 Progress Software Corporation. All rights reserved.22
Recommended reading
The Business Case for Node.jsJoe McCann
© 2014 Progress Software Corporation. All rights reserved.23
Dedicated UI backends
© 2014 Progress Software Corporation. All rights reserved.24
Traditional web architecture
Frontend Developers
BackendDevelopers
Source: http://www.nczonline.net/blog/2013/10/07/node-js-and-the-new-web-front-end/
© 2014 Progress Software Corporation. All rights reserved.25
Modern web architecture
Frontend Developers
BackendDevelopers
Source: http://www.nczonline.net/blog/2013/10/07/node-js-and-the-new-web-front-end/
© 2014 Progress Software Corporation. All rights reserved.26
Liberate the back-end UI layer from the rest of the back-end
"The needs of the front-end are fundamentally different than the needs of the back-end. …It seems almost silly that we didn’t have this separation before… Except before, Node.js didn’t exist.”
Nicholas Zakas
© 2014 Progress Software Corporation. All rights reserved.27
Recommended reading
Node.js and the new web front-endNicholas Zakas
Matt [email protected]@mattrobinson140