View
61
Download
1
Category
Preview:
Citation preview
How to Auto-Generate a Back-end in Minutes
Per Minborg & Emil Forslund, Speedment, Inc.
November 9, 2016
Every Decision a Developer Makes is a Trade-off
“The best code is no code at all”
Using Code Generation• Makes the code efficient and short
• Modifications are done once and applied everywhere
• Minimizes errors
• “DRY” (Don’t Repeat Yourself) vs. ”WET” (We Enjoy Typing)
• “Code your code”
About Us
Per Minborg• Founder of several IT companies
• Lives in Palo Alto
• 20 years of Java experience
• 15+ US patents
• Blog: Minborg’s Java Pot
Emil Forslund• Back-End Developer
• Lives in Palo Alto
• 8 years of Java experience
• Blog: Age of Java
Ext Speeder
Front End
Back EndOne End
Ext Speeder
• Existing Relational Database
• Graphically Setup REST API Endpoints
• Generate Complete Back-End
• Deploy Stand-Alone or on aJava EE Application Server
• Merge Changes in DB Schema into Application
Ext JS Application
API Management
• Define Exactly Which Data to Expose
• Rename tables, columns, etc.
• Create Custom HTTP Paths
• Change Data Format
• Create Virtual Columns
Generated Runtime
• Column Oriented In-Memory Cache
• Automatic Reload From Database
• Multi-Threaded Execution
• JSON Encoding
• Secure Socket Layer (SSL)
curl –X GET https://api.example.com/customers ?start=1000 &limit=25 &callback=cb
cb([ {"id":1, "name":"Speedment, Inc.", "region":"North America"}, {"id":2, "name":"Sencha, Inc.", "region":"North America"}, ... ]);
Workflow
customers.stream() .filter(…) .filter(…) .map(…) .collect(toList());
Step 1: Connect to DB Step 2: Generate Code Step 3: Deploy
Step 4: Iterate
Example: Sales Organization DB
Sales Organization DB – What We Have
• Existing Database- Customers
- Products
- Salespersons
- Sales
• Millions of RowsRegionCountry
Office
Customer
Salesperson
Product
Sale
Works at
Sold by
Product sold Sold to
Located in
Lives in
Part of
Sales Organization DB – What We Want
Regions Are Stored in Separate Table
Users Can Filter and Sort in Real-Time
BufferStore With Millions of Rows
Sales Organization DB – How To Get There
• Launch Ext Speeder
• Connect to the ”Salesinfo” database
• Create API Endpoint for ”Customer” table
• Create Virtual Column ”Region”
• Generate Code
• Run
1. Connect
2. Generate
3. Deploy
Sales Organization DB – The Generated REST API
curl –X GET https://api.example.com/customers ?start=1000 &limit=25 &callback=cb
cb([ {"id":1, "name":"Speedment, Inc.", "region":"North America"}, {"id":2, "name":"Sencha, Inc.", "region":"North America"}, ... ]);
Secure Connections using SSL
Virtual Columns Make It Possible To Include Data from Other Tables
Results Are Returned Using JSONP
Sales Organization DB – How Fast Is It?
• Latency < 10 ms
• 1,000 – 10,000 TPS (Transactions Per Second) per node
• Implementation Time: 5 minutes
• Model the database 5 h
• Secure Connection 1 h
• Parse http command 1 h
• Deserialize parameters 1 h
• Manage database connections 1 h
• Convert into SQL 2 h
• Optimize queries 3 h
• Parse database response 2 h• Format into JSON 1 h• Send back to Client 1 h• Write XML config 1 h• Deploy in Java EE 1 h• Fix bugs 4 h• Run Application <1 h
Traditional Back End Development Process
~24 h
• Connect to database <1 h
• Select tables and columns <1 h
• Press ”Generate” <1 h
• Deploy in Java EE <1 h
• Run application <1 h
Ext Speeder Back End Development Process
~1 h
How To Use
Graphical Tool
Tell Ext Speeder Where To Find Your Database
Press ”Connect”
Graphical ToolDatabase Changes Can Be Merged With the Press of a Button
Press to Generate Complete Back-End
Database Structure Illustrated as a Tree
Control Every Aspect of the Generated Solution
Feedback In the Form of Notifications
IDE Integration
• No Installation Required
• Launch Tool as a Maven Goal
• Regenerate Code from Saved Config File
IDE Integration
Example from NetBeans IDE
Supported Databases
Deployment Scenarios
• Stand Alone Java SE 8
• Java EE Application Server- Oracle WebLogic
- Tomcat / TomEE
- Glassfish / Payara
- Wildfly / JBoss
- Jetty
Ext JS Compatibility
• Ext JS 6 (BufferedStore)
• Ext JS 5 (BufferedStore)
• Ext JS 4 (Use regular Store with buffered = true)
Live Demo
Extreme Performance
How Ext Speeder improves your performance
• Data Database objects are stored in-memory
• Sort A sorted view of every column resides in-memory
• Filter Resolved without querying the database. In-memory filtering lookup.
• Skip In-memory dictionaries improve skip performance
• Total Number of results are cached for each set of parameters
• Open database with US doctors
• 40 million objects
• Comparison with and without Ext Speeder
See full video on www.extspeeder.com
Ext Speeder Back End Development Process
User Case : Extremely Heavy Industries
Download Free 30-Day Trial
Download Free 30-Day Trial
Want Maintenance & Support?
• Up to 5 Developers $ 2,475 / Year
• Every Additional Developer $ 495 / Year
• Renewal: 50% of regular price
Need Custom Features Tailored for Your Project?
Contact Salessales@extspeeder.com
Additional Database Connectors
Scale-Out Over Multiple Nodes
Aggregating Operators
Create, Update, Delete...
Connect Several Databases
Reactive WebSockets
Please Take the Survey in the Mobile App
• Navigate to this session in the mobile app
• Click on “Evaluate Session”
• Respondents will be entered into a drawing to win one of five $50 Amazon gift cards
Ext Speederhttp://www.extspeeder.com
Ext JShttps://www.sencha.com/products/extjs/
More Information
Thank You! minborg@speedment.com emil@speedment.com
Recommended