450 likes | 1.16k Views
Dev 2.0: Model Driven Development in the Cloud. Gautam Shroff – TCS Innovation Lab - Delhi. Enterprise IT Needs. “Business agility is directly linked to financial performance” recent (2 yrs old) survey results from MIT. ‘Cloud’. “Existing Systems consume 75-80% of IT spend”
E N D
Dev 2.0: Model Driven Development in the Cloud GautamShroff – TCS Innovation Lab - Delhi
Enterprise IT Needs • “Business agility is directly linked to financial performance” • recent (2 yrs old) survey results from MIT ‘Cloud’ • “Existing Systems consume 75-80% of IT spend” • infrastructure: management costs are multiples of platform costs ?? • application maintenance: $2.4 for each development $ • “40 years of software engineering” • why does enterprise IT still cost so much and take so much time?
Cloud Computing • Amazon EC2 and S3 • compute & storage capacity ‘on demand’, i.e. pay per use • Google AppEngine • Python/Java development environment • free for small applications, then pay by load • Windows Azure • Visual Studio based development environment • pay per use similar to Amazon “The Cloud” ??
Cloud Computing Economics • Essential aspects of any `cloud’ service: (i) “pay-per-use” (ii) rapid end-user provisioning (ii) commoditized service • Consumer: can avoid provisioning for peak load • Provider: can amortize load across a larger variability of usage profiles • Cloud platforms offer computing infrastructure at significantly cheaper TCO
What about Development Costs? No Silver Bullet? “There is no single development, in either technology or management technique, which by itself promises even one order-of of-magnitude improvement within a decade in productivity, reliability, or simplicity.” - Fred Brooks, 1975 However – • Computer hardware has progressed a lot • No other technology since civilization began has seen seven orders of magnitude price-performance gain in 50 years; and now Cloud • The Internet happened • It has been 3 decades since !
Cloud Computing & [Global] Development • ‘Control’ over server infrastructure • development server today, production server tomorrow • ‘my’ server today, customer’s server tomorrow • Rapid provisioning of Dev – Test environment • Performance testing in a ‘real’ environment • PaaS development platforms promise ‘automatic’ scalability => 2x productivity gain prod dev image
Software as a Service (SaaS) • Hosted applications • customers can be up and running without corporate IT • Multi-tenancy - single code base; multiple customers • software development economies of scale driving down costs • rapid and invisible upgrades
Cloud Computing and Software as a Service • “What about my data” • often an inhibitor to SaaS adoption • SaaS applications could potentially use a customer’s ‘own’ data in the same cloud (this does not happen yet) ‘my’ data SaaS application
Automation in Software Engineering:Model Driven Architecture:
Visual Modeling Model Driven Architecture Describes Application Model Meta Model Code Generator Templates Application Code • Class <ObjectName>: • <Attributes> • …. • Class PropertyObj: • PID • Address • Owner
Lessons from our MDA experience • Technology Proofing • critical for redeployment to different architectures, databases, languages… • Developing into complex high-performance software architectures • critical for enforcing standards and uniformity required for performance However • Steep learning curve & complex environment • Poor turn-around time for changes • Incremental generation and testing difficult • End-to-end savings was less than expected • Even if code is generated from model elements – one change – say a field addition, or size change can affect upto 100 lines of code, and cause re-generation of over 1000 lines across many files – all needs to be deployed, tested … MDA works best for large, complex ‘product-line’ systems Not for small light-weight applications
Lessons from the Web Web 1.0: Publishers and Readers Web 2.0: • “Do it yourself” writing – blogs, wikis • “Do it yourself” publishing: Netvibes Sharepoint Sampa, Ning …
Web 2.0 to Dev 2.0 • “Do it yourself” business applications: “Application Platform as a Service” Gartner 2009 Salesforce.com Zoho • Other examples – e.g. a very large F100 enterprise’s in-house platform • Forms driven database oriented workflows without coding or any ‘IDE’
Model Driven Interpreters • Dev 2.0 platfroms are using model driven intepreters • even though they may not explicitly view themselves this way! • MDI: • interprets model at runtime instead of generating code • does this efficiently • Dev 2.0 platforms also: • allow manipulation of the model while the system is running • manage this efficiently and correctly • In addition some Dev 2.0 platforms: • allow manipulation of models and immediately render – WYSIWIG • are [somewhat] meta-circular
Model DrivenInterpreters Describes Model Repository WYSIWYG “Designer” Model Interpreter • Class EntObj: • attrs = [(,)] • def _init_(name): • classname=name • lookupMM() • fillAttrs() TCS InstantApps In-memory Model
TCS InstantApps: Enterprise-class Dev 2.0 • R&D initiative begun in 2004 • Goal: “point and click” WYSIWIG development of business applications • Integrated platform for small-medium applications, moderate workloads / data • Proven Rapid time-to-market – significantly faster e.g. 2-3x => business agility • Enterprise class: • complex forms (multi-table) • workflow (BPMN in browser, ECA rules) • business logic (custom code + visual…) • custom user interfaces • “Instant Multi-Tier Applications without Tears” • ISEC Feb 2009, Pune India • “InstantApps: A WYSIWYG Model Driven Interpreter for Web Applications” • - ICSE May 2009, Vancouver, CA
Business Logic Models • e.g.: functional logic ‘checkLeave()’ called on leave form should: • check if employee has enough leave balance • if so, decrement it by the number of days applied and approve, else reject • Blocks are based on types of forms • search, add, update, & compute block with I/O expressions • blocks perform the same functionality as the corresponding form on the same table/object • objects flow along the edges, and are related to each other via attribute names – ‘keys’ • multiple object instances can flow on an edge and blocks can have multiple output edges • This ‘Logic Map’ can be modeled as a ‘Map-Reduce-Merge’ flow (Map-Reduce on relations) map (k1,v1) I a [(k2,v2)] I a - blocks with one input object reduce (k2,[v2]) I a (k2,[v3]) I a - block that does some aggregation merge (k2,[v3]) I a , (k3,[v4]) I b [(k4,v5)] I c - blocks that take two input objects
Dev 2.0 in the Cloud • Web based Dev 2.0 platforms - `SaaS’ model • InstantApps on Amazon EC2 - `PaaS’ model
Dev 2.0 Economics Dev 2.0 • Essential aspects of any `cloud’ service: • “pay-per-use” per-user / per CPU-hr / per-FP • rapid end-user provisioning instantly `provision’ a `blank’ application via multi-tenancy • commoditized service common application functionality available as re-usable `templates’ • Consumer: can avoid provisioning for peak load • Provider: can amortize load across a larger variability of usage profiles • Cloud platforms offer computing infrastructure at significantly cheaper TCO
Beyond Dev 2.0 in the Cloud: “Cloud Services”? • Can outsourced services (BPO, KPO) share `cloud’ features? • “pay-per-use” outcome based pricing • rapid end-user provisioning customer configurable services • commoditized service “payroll”, “accounting”, “claims” available as re-usable templates’ • Dev 2.0 ideas appear to have some role to play here - `watch this space’
Summary: Dev 2.0 in the Cloud for Enterprise IT? • Dev 2.0 is new to Corporate IT; so is Cloud infrastructure • reluctance to ‘give up’ end-to-end programming • ‘architects’ need a vocation too • but speed and productivity can’t be ignored forever • hosted Dev 2.0 platforms are ‘playgrounds’ for now • viable ‘on-premise’ Dev 2.0 needed (e.g. InstantApps) • `private’ cloud experiments abound (but lack economies of scale) Our Conclusion: “As IT infrastructure gets increasingly complex, all organizations will need to embrace ‘Dev 2.0 in a Cloud’, and mix of external and/or an internal clouds, SaaS, and PaaS technologies. • Finally, outsourced operations may evolve into cloud services”
DELHI MUMBAI PUNE HYDERABAD BANGALORE CHENNAI TCS Research • Research Advisory Board • Jeff Ullman – Stanford • VS Subrahmanian – UMD • KrithiRamamritham - IITB • 7 major corporate research locations in India • ~ 500 research staff, ~ 75 PhDs • Areas: • Software Engineering • AI and NLP • Multimedia • Analytics and Algorithms • Large Scale Systems • Bio & Nano Technology Please visit us – short term (and long) saabaticals / internships are welcomed! KOLKATTA
gautam.shroff@tcs.com TOC: http://eccbook.appspot.com thank youQ&A