October 11, 2016
tl;dr – 2 Biggest take-aways
- Amazon’s AWS Lambda lets you run code without provisioning or managing servers.
- Adobe’s API Manager provides many of the features that developers have traditionally implemented themselves when realizing an API/Integration layer.
I recently attended NCDevCon 2016 which was held at the College of Textiles on NCSU’s Centennial Campus. The college has an amazing facility with a great staff and lots of fascinating machines. There was a lot to learn at the conference but I came away with 2 big takeaways.
1. Going Serverless with AWS Lambda
The first of the two sessions I found most interesting was a multi-session “lab” with Adrian Pomilio called “Party Like Thor in the cloud!” We covered building and deploying serverless applications with Amazon’s AWS. Personally, I think that calling this technology “serverless” is a bit of a misnomer. If it is running in the cloud, it is running on a server. The “serverless” part comes from the fact that you mix and match different services provided by AWS to provide all the server-based infrastructure that is typically needed for a web-based application.
- IAM groups and users provide authentication and security
- S3 storage is used to store static data and web content
- API Gateway is used to create REST based APIs
- DynamoDB provides a NoSQL database
- Lambda provides a way to implement and deploy your code
Lambda is the feature that really takes the server out of the picture for “serverless” solutions. It allows you to run code without provisioning or managing servers. IBM has a similar offering called OpenWhisk, and Google has an offering called Cloud Functions. With Lambda, functions are deployed so that the code is ready and waiting to be invoked. When it gets triggered from other AWS services or by being called directly from a web or mobile app via REST, a Lambda spins up, runs the code, returns the results and then exits. Amazon charges only for the compute time that is consumed. An EC2 instance does not need to be kept up and running all the time which can become costly. Plus, Lambda automatically scales to handle higher loads.
These callable functions are a very interesting and novel idea that could be a useful way to deploy small and independent functional bits of code. But, it also seems like it would be necessary to decompose the server side application into more of a microservices type of design to be able to fully leverage this feature. For large web applications, perhaps the bulk of the application would still be deployed in a more conventional manner on an EC2 instance and smaller independent services could be made available via Lambda.
2. Adobe’s API Manager
The second session I found quite interesting and most applicable to the work I do at PointSource as a back-end developer was “API Management Basics” with Elishia Dvorak from Adobe. Some of the primary components of API management include security, versioning, monitoring, analytics, metering and throttling, documentation, caching and testing. In order to manage APIs, they must be defined to the API Manager which can be done by importing Swagger definitions. This is a very attractive feature to anyone using Swagger to define and test APIs.
When we began our API work a couple years ago, solutions such as these were not available. Many of the features could have saved us time and effort during our initial implementation. For example, the API Manager provides several authentication mechanisms like Basic Auth, API Keys and OAuth2. To secure our APIs, we had to implement our own HMAC and JWT authentication mechanisms. Similarly, the API Manager’s response level caching would have allowed us to save development effort on building our own in-memory and Redis based cache implementations.
Any organization implementing an API and integration strategy may find it worthwhile to investigate an API management solution such as Adobe’s API manager or similar offerings from other vendors like IBM’s API Connect. The API Economy has matured over the last few years and API Management solutions offer core infrastructure features that developers may have previously built themselves. Using an API Management solution can help developers focus more on core business logic rather than core foundational features.
Thanks to the College of Textiles
Shawn Dunning, the IT director at the college that hosted the conference, did a great job along with his staff. He gave several of us a tour of some amazing labs that highlighted everything from making yarn to weaving cloth, knitting garments and finally to testing firefighter gear in whole room fire chambers. NCDevCon 2016 was an enjoyable conference and I’m very glad that I got the chance to attend.