2. Background
This talk is geared for State IT/App Dev
Managers.
Many of these ideas apply to all.
Who am I?
IT Consulting on state app dev projects for past 10
years
Private IT Application Development for 13 years
before that.
3. Background
Why this talk?
Difficult to replace legacy applications in the State
Massive RFP costs
High risk, in a risk-averse environment
Difficult to field new self-service applications
Technology Complexity
Security
Infrastructure cost/commitment
New options in Application Development to
empower teams
New Processes
New Tools
New Infrastructure
4. What’s Changed?
What’s changed to empower teams in new ways?
New Processes
New Tools
New Infrastructure
5. New Processes
Agile development principles
Agile -- Fixed scope over short development cycles
Team ownership
Favors working product over documentation
Rapid feedback loop accelerates team learning
(Get “the rhythm” faster)
Expose problem areas earlier and reduce risk faster
(Many good books: see Agile Project Management with
Scrum by Ken Schwaber)
Continuous integration
Frequent (daily or more) builds
Automated testing
Goal is to reduce amount of backward steps, and do it
quickly
6. New Processes
New Tools
Open Source for frictionless evaluation/learning
Application Development Frameworks
Enterprise Grade
Platform neutral (both Java and .NET)
Include transaction support, logging, security, etc.
Automates tedious tasks (e.g. CRUD creation,
REST setup)
Build & Delivery Tools
Automated Testing
7. New Processes
New Tools (cont.)
Git and Github -- source code management (scm) and distributed
sharing
Git: git-scm.com
Eclipse, Maven -- IDE and dependency management / build
management
Jenkins, and Chef for continuous integration and devOps
Maven for Eclipse: http://www.eclipse.org/m2e/
More build/deployment management (just info, not using here)
Jenkins: https://jenkins-ci.org/
Chef: https://www.chef.io/
Spring Boot – MVC framework
An opinionated view – gives you what they think you need, and makes
assumptions.
Spring Boot: http://projects.spring.io/spring-boot/
(What’s up with all the names? ElasticSearch, Gemfire, Undertow, HornetQ,
Atomikos…)
Junit, Protractor -- unit and e2e testing
Angular.js – presentation layer
Angular: www.Angularjs.org (includes protractor e2e testing)
No question: there’s a learning curve to all these tools
8. New Processes
New Tools
New Infrastructure
AWS hosting enables:
Instantaneous build up and tear down
Scalability
Testing Flexibility
Setup/tear down testing environments
Daily! Hourly! Unplanned!
Low cost
Did I mention scalability?
Less complex planning required
State rules for hosting are relaxing
9. Demo
Angular
Spring Boot Web Archive (WAR)
Spring Controller and Class files
Aurora
AWS
Elastic
Beanstal
k
AWS
RDS
JavaScript-based
presentation
framework on
browser
17. Demo (cont.)
AWS
Show separate environments in console
Show Elastic Beanstalk console
Creation of a new EB instance
18.
19.
20.
21.
22.
23.
24.
25.
26. Demo (cont.)
Show the current in AWS
http://cws-env.elasticbeanstalk.com
Show services. Standalone testing!
Go to URLs
http://cws-env.elasticbeanstalk.com/app/index.html
Show REST endpoints from code
http://cws-env.elasticbeanstalk.com/statuses -- Spring
created
http://cws-env.elasticbeanstalk.com/child/10 -- custom
created
Angular
Complex, but dependency-injection is powerful, and
MVC-like
Separation of development/testing concerns (from
core application)
27. Summary
Enterprise-Grade Solutions, not just prototypes
Proven Processes
Proven Frameworks/Tools
Proven Infrastructure
Combination of the 3 Offer New Options
Re-focus resources on learning & implementing business
needs (not procurements)
5-10X development payback?
2yr RFP and Development at $30M+ vs. 1yr in-house for $4-6M
Faster to business value with no long procurements (and cheaper)
Specific Highlights
Leverage Legacy Data Model
Testing
Quickly setting up/tearing down testing environments
Separation of business rules from presentation via services/API and
front-end
Reduce risk around capacity planning with dynamically scaling
up/down