七乐彩开奖结果查询:QCon NY: Joe Emison on Serverless Patterns and Anti-Patterns
Emison stated that with the software we develop, especially the Software as a Service (SaaS)-based products, maintenance is very critical because the software will last for a long time. Software applications with less custom code is easier to maintain. It is important for developers to know that the software is all about the value it delivers, not what's in that software. Serverless provides the pragmatic approach to architecture, which allows developers to focus on business logic and not infrastructure.
Emison talked about how serverless architecture based applications work. Serverless doesn't mean no servers, it means "no server ops". Technologies like containers helped with abstracing away infrastructure and server-level operations. Serverless takes away even the application-level operations.
Four real-world application use cases were presented for "Fuel SQC", "Spaceful", "Commercial Search", and "Branch". The architecture of these applications included Angular and React on the web UI side, AuthO for user authentication, Cloudinary for image management, Netlify, Amazon's CloudFront, Amazon S3, [email protected], Cognito for security, and DynamoDB as the database.
Emison continued the presentation with discussion on design patterns for serverless applications, anti-patterns for greenfield applications and migrations, and real-world consequences of running serverless apps in production. Serverless patterns and anti-patterns he discussed included the following:
- Thick clients: You should have thick clients in your serverless based apps, but not thick middle tiers. Serverless doesn't work well on the client side (using frameworks like Ruby on Rails, Django, or Angular). Developers who are used to taking these frameworks and just moving them over to the serverless model are going to face challenges.
- Functions: He said functions are the glue in this architecture model, but avoid functions calling other functions. You'll have to pay for every function execution which could become very expensive in terms of total cost. Deploy each function monolithically to address this concern.
- Serviceful: Develop your applications based on a service-centric approach and build on the backend middle tier services as opposed to writing and running them yourself. But beware of multiple single points of failure (SPOF). Make sure the service you are using has the right uptime.
- Custom research (and code): Custom research is a good practice in developing applications to leverage serverless architecture. But custom code can be an anti-pattern. It's ok to take some time to do the research and pick the right solution. Emison gave an example of this as, "prefer two weeks of planning and two days of development over two days of planning and two weeks of development".
For more information about this presentation, checkout the presentation slides on QCon New York conference website, as well as the other presentations in the track titled "Finding the Serverless Sweetspot".