587 karma · joined February 8, 2013
Given this experience, our hypothesis is if we can greatly increase the speed of deployment, developers will be less interested in local emulation.
With Serverless Components, we're now achieving incredible results. First deployment always takes a bit longer due to initial creation of resources, some of which are global (e.g. AWS IAM), but all Serverless Components are designed to deploy as fast as possible and we're aiming for ~5s max in deployment time as our key metric. We'll go into detail later about how we've been able to optimize this.
I've included some performance info in a comment below.
In the interim, check out this Component (which is used by this project) which provides a simple webockets backend and can be used for that use-case - https://github.com/serverless-components/Socket
When it comes to migration, it depends on your use-case. A few suggestions which may be helpful:
* Consider your data strategy (much lock-in happens at this level). Most serverless architectures leverage DynamoDB because its design pairs well with stateless compute like AWS Lambda. You can use DynamoDB within all types of architectures.
* Don't use AWS API Gateway specific URLs in your application. Use custom domains. This will enable you to easily swap out your websockets endpoint. Fortunately, there is only 1 endpoint in this architecture, so there is little surface area to refactor.
* Make sure you understand the cost of these serverless technologies at scale before building with them. But don't forget to factor in the reduced labor costs of using serverless technologies.
1) Serverless Framework
The Serverless Framework enables you to provision serverless applications in a Function + Events pattern. Using this, you can accomplish the patterns you're describing, and hundreds of thousands of people are doing this already with the Framework.
https://github.com/serverless/serverless
2) Serverless Framework Enterprise
SFE works with the Serverless Framework to give you more than development and deployment convenience. SFE focuses on other phases of the serverless application lifecycle, like monitoring, alerting, security, collaboration, secrets and much more. It's a powerful solution for teams and orgs investing more in serverless application development.
https://serverless.com/enterprise
3) Serverless Components
This is a new take on serverless application development. We've learned the serverless community and teams are looking for ways to deploy and share composable architectural pieces (features, use-cases), more than infra. So we're building a new type of provisioning system to enable this. The Realtime Application Component is an example of this.
https://github.com/serverless-components/RealtimeApp/tree/ma...
You can deploy this example. It contains a Create React App front-end and it uses DynamoDB on the back-end to keep track of who is connected to the Chat Application.
One of the child Components powering this project is the Socket Component, which allows anyone to provision a serverless websockets backend simply. You can use it here: https://github.com/serverless-components/Socket
Here is an example of a full Chat Application that demonstrates how you can provision and extend this Serverless Realtime Application Component programmatically, very much like a React Component.
https://github.com/serverless-components/ChatApp/blob/master...
This project's pattern uses a single AWS Lambda function for all of those events, for the sake of simplicity as well as performance because by receiving more events, the function is kept warmer than average.
Further, when the user loads a page, if you establish the connection at that time, you warm up the function in the background by sending the connection event.
Here is full Chat Application example you can deploy to test performance: https://github.com/serverless-components/RealtimeApp/tree/ma...
When deployed to us-east-1 and using it in San Francisco, when the Chat App loads, it establishes the websockets connection immediately via React's componentWillMount(), which will warm the AWS Lambda Function. By the time I send the first chat message, the function is already warm, and it takes ~100ms on average to send and receive messages.
Due to the fast pace of change, many organizations cannot keep up (let alone lead) by building & maintaining all of their IT.
This has given rise to the "serverless architecture", an application pattern that uses high-level managed services like AWS Lambda, AWS API Gateway, Auth0, Stripe, Twilio, Netlify, etc. to deliver applications quickly with remarkably low overhead.
Our company helps orgs build & operate serverless architectures. We started with the Serverless Framework (https://www.github.com/serverless/serverless). Now, we're currently expanding our line of products.
If developer tools, open-source & enabling all engineers to "build more & manage less" is of interest to you, please apply here: https://serverless.com/company/jobs
Be at the forefront of the cloud. Build next-gen developer tools and cloud infrastructure. Empower developers and everyone as we make software development more accessible.
https://github.com/serverless/serverless https://github.com/serverless/event-gateway
We started with the open-source Serverless Framework (http://www.serverless.com), we raised a great seed round, and now we're building more awesome tooling to help individuals and teams build serverless, event-driven architectures using AWS Lambda, Google CloudFunctions, Azure Functions and more.
We're looking for the following: • Node.js/Go engineers w/ devops expertise • Front-end/react engineers • Developer evangelists
Why this is a unique opportunity: • We're seeking to define the future of application delivery, not follow someone else's lead • Work w/ cutting-edge tech all day long • Our team is (very) small and you would be getting in super early • The VC firms backing us are behind the best developer companies of all time • Liberal, remote culture, based on trust • Open-source centric • Lots of traction
Contact us at jobs@serverless.com or ping us in gitter: https://gitter.im/serverless/serverless
Last year, we began building the first serverless application framework (http://www.serverless.com), enabling developers to build web, mobile and IoT applications exclusively on event-driven infrastructure like AWS Lambda. Since then, we’ve been on the front page of Hacker News several times, collected around 7,000 Github stars and we've been funded by one of the top VC firms in the cloud infrastructure space (we’ll announce who soon).
Now, we’re doing something bigger. We’re looking for seasoned AWS infrastructure and React engineers to build a secretive, ambitious project that will potentially have a large impact on application delivery and open-source in general.
Though our company, and this project in particular, you will use cutting-edge technologies like AWS Lambda and GraphQL to solve longstanding problems with application delivery. Together, we will define new serverless/event-driven architectural paradigms, and help all developers deliver scalable applications, efficiently. This is a fantastic experience if you are forward-looking and ambitious.
team@serverless.com