Programming Newsletter – February 2019

Serverless Application Design

What is Serverless Architecture?
• “It’s important to understand that a serverless architecture is the approach in which developers code business logic as functions, forgetting about the server’s provisioning and scaling concerns where the logic will be executed.” – Martin Fowler
• Serverless architecture was born through the initiative of Amazon.
• Its goal is to provide development team an environment where the team could be autonomous, small, and self-managed.
• It allows development teams to work on the whole software development cycle, from writing the code to shipping and delivering to production environments.

Serverless Architecture – Examples
• Common examples
• Authentication
• SMS notifications
• Email services
• Custom business logic can be coded in the form of serverless architecture that can be deployed on the cloud
• Applications in which third-party services are adopted as a part of the system (rather than creating services from scratch).
• These services are commonly known as backend as a service (BaaS) or mobile backend as a service (MBaaS).
• We can code our custom business logic in the form of functions that can be deployed on the cloud. These services are known as function as a service (FaaS).

Continue Reading…

Open the document

Courses
WA2752 Fundamentals of Cloud Native Java Development
Businesses need the elasticity of the cloud to build and deploy scalable applications. This course teaches a Java developer to do exactly so. We teach the design patterns for cloud development and immerse the students in copious hands on labs to gain experience.

At the end of this course, the student should be able to:
• Explain the 12 factor methodology and the concepts of cloud native development
• Design serverless applications
• Understand and tackle the challenges of distributed scale applications
• Build Java applications for deployment in the cloud

Event-Driven Computing in AWS

Defining Event-Driven Computing
• Event-driven computing is a processing paradigm in which the flow of computing is determined by events raised / generated in response to a change in a resource or system
• Event-driven computing is asynchronous in nature and decouples event producers from their consumers
• When events are published, some sort of notification (message) is sent to a configured destination where that message is retrieved by the consumer
○ Message retrieval happens on demand through some sort of polling or made available to the message consumer through a call-back mechanism
• Event-driven computing with asynchronous communication models allow you to create loosely coupled, independently scalable, and reusable services (this architecture style is sometimes referred to as Microservices Architecture)

Event-Driven Computing has its roots in Event-Driven Programming model which, according to Wikipedia, “ … is a programming paradigm in which the flow of the program is determined by events such as user actions (mouse clicks, key presses), sensor outputs, or messages from other programs/threads. … In an event-driven application, there is generally a main loop that listens for events, and then triggers a callback function when one of those events is detected. In embedded systems, the same may be achieved using hardware interrupts instead of a constantly running main loop.”
Continue Reading…

Open the document

Webinar
Developing in AWS

Courses
WA2734 AWS for Developers
Upcoming classes: February 27 – March 1
The students of this training will learn the modalities for developing on the Amazon Web Services cloud platform. This intensive 3-day course covers the most important areas of AWS that will help the students become aware of the existing cloud-grade capabilities that could be immediately translated into tangible value for their companies. This training course is supplemented by a variety of hands-on labs that will help the attendees reinforce their theoretical knowledge of the learned material.

Event-Driven Computing in AWS

Defining Event-Driven Computing
• Event-driven computing is a processing paradigm in which the flow of computing is determined by events raised / generated in response to a change in a resource or system
• Event-driven computing is asynchronous in nature and decouples event producers from their consumers
• When events are published, some sort of notification (message) is sent to a configured destination where that message is retrieved by the consumer
○ Message retrieval happens on demand through some sort of polling or made available to the message consumer through a call-back mechanism
• Event-driven computing with asynchronous communication models allow you to create loosely coupled, independently scalable, and reusable services (this architecture style is sometimes referred to as Microservices Architecture)

Event-Driven Computing has its roots in Event-Driven Programming model which, according to Wikipedia, “ … is a programming paradigm in which the flow of the program is determined by events such as user actions (mouse clicks, key presses), sensor outputs, or messages from other programs/threads. … In an event-driven application, there is generally a main loop that listens for events, and then triggers a callback function when one of those events is detected. In embedded systems, the same may be achieved using hardware interrupts instead of a constantly running main loop.”
Continue Reading…

Open the document

Webinar
Developing in AWS

Courses
WA2734 AWS for Developers
Upcoming classes: February 27 – March 1
The students of this training will learn the modalities for developing on the Amazon Web Services cloud platform. This intensive 3-day course covers the most important areas of AWS that will help the students become aware of the existing cloud-grade capabilities that could be immediately translated into tangible value for their companies. This training course is supplemented by a variety of hands-on labs that will help the attendees reinforce their theoretical knowledge of the learned material.

Commonly Used Patterns

Why Use Patterns?
• Design Patterns offer high-level description of proven solutions in various problem domains
• Learning patterns (and anti-patterns, for that matter), helps software designers avoid common pitfalls and become more productive
• At the very least, you can save yourself time not reinventing the wheel or inventing a square wheel
• In this module, we will list some of the commonly used patterns with microservices
• Selecting a pattern that best suits your needs may require some investigation / PoC projects
• Some patterns are discussed in detail in other modules, so here those are just briefly mentioned

Continue Reading…

Open the document

Courses
WA2755 Introduction to Microservices Architecture
Upcoming classes: February 19-21
This training course will help the attendees understand the value proposition and technical aspects of microservices. You will learn about the pros and cons of breaking up the monolithic type of applications prevalent in the enterprise space and converting them into microservices-based solutions. Details analysis of some of the common patterns and motivation for using them in microservices architecture is also provided.