Disruptive Trends in Application Development
-
Upload
wavemaker-inc -
Category
Software
-
view
355 -
download
0
Transcript of Disruptive Trends in Application Development
Presenters
2
Technical Architect
Samir Ghosh
CEO
Anurag Parashar
WaveMaker, Inc.• Headquartered in Mountain View, CA• Enterprise Software Platform for Custom App Delivery
• Scarce, Expensive Resources
• Complex Supply Chains
• Social-media Empowered Customers
• Global Competition
• Demanding Consumerized Employees
• Disruptive Business Models
Enterprises Facing Increasing Challenges
• Governance and Compliance
3
Successful Enterprises
Enable Agility
Democratize Decision Making
Foster Innovation
IBM CIO Study – Successful Companies…
• Build a workplace strategy and roadmap that drives innovation and productivity
• Enable secure anytime, anywhere access instead of restricting usage
4
Apps are Key Enablers
Making informationmore broadly available
Capturing and refining competitive and innovative processes
Gather input and interaction from broader constituents
Improved accessibility = faster decision making
Automation for consistency and speed
Improved customer service
5
Challenges
• Responsive vs. Adaptive vs. RESS (Responsive + Server Side)?
– Server side or client side?
– Single URL or different URLs?
• Graphics Design
– Can require significant work & time
– Different skills: good graphics designers are scarce, expensive
12
April 21, 2015
Decoupled UI Components.
Professional Template starting points.
14
Caution: Avoid lock-in and dead-end functionality.Ensure: Open Standards and Extensibility.
Growth of APIs
Source : programmableweb
As of today, the number of registered APIs on ProgrammableWeb has crossed 13000 APIs.
Why is API a trend?
• Increase in consumption of data/functionality from multiple devices.
• Need for easy, usable, secure and loosely standardized contracts
What is API?
• Application Programming Interface
• Way to expose data/functionality
– Operation, Input, Output and Types
• Not new
• SOA with SOAP/WSDL, REST services
Modern APIs need to
• Be usable
• Optimize network traffic.
• Be simple to understand
• Provide finer resource level control.
• Be secure
RESTful APIs meet modern needs
Fine Grained Access
• /v1/customers/[customer-id]
Simple to Understand
• CRUD operations map to HTTP method POST/GET/PUT/DELETE
Usable and Optimized
• JSON Response format is optimized as well as understandable.
Be Secure
• OAuth2.0 for finer grained security
Challenges implementing APIs
• Everything needs a representation / API
– Software services / data
– Things being connected with IoT (Internet of Things)
• Every “Thing” needs a representation / APIs to get connected in the ecosystem of IoT
• API Consumption still requires a lot of technology knowledge / investment.
• API should provide secure access.
API Driven Development
• API can no more be an afterthought
• API should be created/updated for every entity in the application, preferably automatically
API Driven development with easy testing of generated/created APIs.
Simplified API Consumption
Pre-fabricated application components providing the API usage can boost developer productivity tremendously.
Control API Access
API Access Configuration• Not exposed at all• Only for same application• Internally in organization• Public APIs
Continuous Delivery trend
Continuous Delivery Agile Application Process having a steady gain and being adopted more and more in past few years.
Continuous Delivery – Why?
• Move from software to SaaS means getting updates released is now only restricted by your own operations.
• More number of releases, ensure truly agile process
• React quickly and respond to change
QA Staging Production
Test Script
Release Script
Create Script
Lots of scripts
Test Script
Release Script
Create Script
Test Script
Release Script
Create Script
• Change in Configuration• Install new software• Add a new Component
Need to repeat the script cycle at all stages.
Even with Configuration Management tools.
Challenges with Continuous Delivery
Docker to Rescue - Portable Containers
Build QA Staging Production
Run Anywhere
Minimum ConfigurationContinuous Delivery
Developers / Operations want Continuous Delivery for consistent and quick turnaround.change to have consistnetdiagram
What is Docker?
Build, Ship, and Run Any App, Anywhere
VM Container
Each application in a VM consist of Guest OS, making a few MB application 10s of GB application.
Isolated process in same Host OS, lightweight and hence much more portable and efficient.
How is it different from VM?
• Lots of technologies to assemble
• Moving workloads to Docker
• Managing software stacks & configurations
• Automating deployment processes
• Migration of Data
• Orchestration of containers including– Scheduling and placement of containers
– Cluster Management
– Inter-container Communications
– Network configuration
– Discovery of services
Challenges of Implementing Docker
Enterprise IT also needs
• Role Based Access Control
• Snapshots, backup and recovery of data
• Monitoring of infrastructure, containers and workloads
• Easy and fine grained upgrades
• Optimized Resource Utilization
• Fault Tolerant Application
• Scalability as needed
• Uncompromised Security
Docker Accelerator
• Simplify implementation
• Meet enterprise IT’s unique needs
• Maximize the value of Docker
Dockerize Workload: Docker Images
Upload required files
Provide Commands to
1. Install Software2. One time
Configuration on launch of software
3. Startup scripts
Configurations required
1. Ports to be opened2. Environment
properties required /exposed
Application Stack
MonitoringDB
A P PS T A C K
Designs “App Stack”
comprising of multiple services
A r c h i t e c t
D e v O p s
Configures “App Stack” by
configuring one or more services.
Easily configures connections
amongst services by specifying environment variables, ports etc..
C o n f i g u r e d S e r v i c e s
1. Functional decomposition –Easier operations, upgrades and separation of stack
2. Horizontal Scaling – scale individual services by adding more capacity and without re-architecting
3. Isolation & data partitioning –fault isolation and partition data based on tenant
Micro Services architecture -Application is composed of multiple smaller micro services.
Web Server
New way of Continuous Delivery
QA Staging Production
Test Script
Release Script
Create Script
• Same Aplication Stack Deployed on all environments
• Provide Configuration Variables for each environment
A P PS T A C K
A P PS T A C K
A P PS T A C K
An Application Stack being a set of images working together to provide services.
New way of Continuous Delivery
Launching an existing Application Stack on a new Environment is a one click operation.
Environment Properties can be easily specified for each environment.
Resource utilization
App A
App B
Passivate an active container to free resources for another service
Activate requested service by provisioning a new container
Activation and Passivation of Containers enable effective resource utilization across the enterprise 80%
Optimized Resource Usage… using container hibernation
Active and hibernated containers with monitoring statistics
Microservices further boosted by
• Availability of APIs for communications enables loosely coupled components
• Continuous Delivery enables better release management of multiple services / applications
Monolithic Traditional Architecture
Source: microservices.io
Source
Shortcomings• Updates and upgrades are difficult• One component update breaks another component• Less number of releases• Delayed releases• Unable to get truly agile
Microservice Architecture
Source: microservices.io Source
Advantages• Modular application• Easy maintenance, updates for application• More releases and agile processes• Independently scalable
Challenges Implementing Microservices
• Architecting multiple smaller services / applications
– With Microservices, services become synonymous to application.
• How to make services available for other applications?
– Multiple small services/application require a sophisticated system for communication.
• Technical cost to consume APIs
– Consuming APIs should be a piece of cake to realize value of microservices
It should be easy to publish and share APIs with other developers in the enterprise.
Share APIs with other Developers
Challenges in aligning to these Trends
• Requires a lot of research
• Initial setup is complicated
• The setup takes time to mature
• Configuration and setup of individual MSA components need to evolve
• Lots of boilerplate code
• Release management becomes nightmare
RAD new RAADD
Rapid API Application Development & Deployment
• Automatic Responsive Modern UI
• Easy for non-UI developers. Flexible for pro developers.
• API Driven Development with Micro Service Architecture
• Continuous Delivery leveraging Docker
– Simplify setup and management of Docker and all other requisite technologies.
– Maximize value from Docker
RAADD Cautions
• Open Technologies?
• Open Source?
• Extensible?
• Vendor-Lockin (e.g., proprietary runtime)?
• Delivery Options (On-Prem, SaaS)?