Distributed Cloud Application

Distributed Cloud Application

Yesterday I came across technology-agnostic "Architecting Distributed Cloud Applications" course by Jeffrey Richter on youtube. Jeffery is one of my favorite authors. My .NET journey started with his book "Applied Microsoft .NET Framework Programming," and later he came with "CLR via C#." These books provided deep insight into the technology and built solid foundations. I could not resist myself taking up and completing this course. The course begins with the paradigm shift in distributed applications and presents different challenges when moving to distributed cloud applications. He has clarified various aspects of problems with behavioral/flow insights and solutions to those through animations. The course outlines the different design decision-making factors with pros and cons. He has touched almost all prime cloud services. I'd recommend this course to every developer, architect; no matter, which clouds provider, you are working on.

Cloud computing is the on-demand availability of computer system resources, especially data storage and computing power, without direct active management by the user. The term is generally used to describe data centers available to many users over the Internet. Large clouds, predominant today, often have functions distributed over multiple locations from central servers. If the connection to the user is relatively close, it may be designated an edge server. Applications have to respect the distribution and the scaling-out support of cloud environments in their architecture to benefit from it efficiently. Cloud applications, therefore, should rely on multiple, possibly redundant IT resources. This can especially be the case if the cloud provider assures Environment-based Availability – the availability of the complete environment and not of single IT resources hosted in it.

This course is for anyone considering or actively working on a distributed cloud application. It is designed to provide you with a thorough understanding of these concepts, the various pros, and cons of specific technologies, and the resilient patterns that are heavily used by distributed cloud applications. This knowledge will help you to build cost-efficient and fault-tolerant systems easily. Cloud applications are fundamentally different than traditional applications that run on the desktop, in a browser, or on a mobile device. This master class from Wintellect cofounder and Microsoft Software Architect Jeffrey Richter offer a deep dive into cloud architecture that is independent of platform. Whether you are designing applications for Microsoft Azure, Amazon Web Services, or other cloud platforms, watching this series — and absorbing the principles contained therein — is a MUST before writing the first line of code. How do you deal with noisy neighbor problems?

https://azure.microsoft.com/en-us/training/distributed-cloud-apps/

The cloud is changing the way applications are designed. Instead of monoliths, applications are decomposed into smaller, decentralized services. These services communicate through APIs or by using asynchronous messaging or eventing. Applications scale horizontally, adding new instances as demand requires. In this module, you will learn: • The benefits of cloud computing • How to architect distributed cloud applications • What microservices are and the trade-offs with this architectural style • Container fundamentals • How continuous integration and continuous delivery can be used. This technology-agnostic course begins by explaining the benefits of distributed cloud applications with an emphasis on cost-effectively maintaining high-availability and scalability while also dealing with necessary hardware and software failures. The course also covers Microservices and containers, Networking communication, Messaging communication, Versioning, upgrading and configuration, Data storage services and Disaster recovery. 

This course is for anyone considering or actively working on a distributed cloud application. It is designed to provide you with a thorough understanding of these concepts, the various pros, and cons of specific technologies, and the resilient patterns that are heavily used by distributed cloud applications. This knowledge will help you to build cost-efficient and fault-tolerant systems easily. 

Deploying new versions of an application and managing configuration is an essential part of software development and release. Understanding the best practices for software maintenance and release strategies in the cloud can help minimize or even eliminate application downtime. In this module, you will learn: • Service release strategies and trade-offs • Gracefully shutting down service instances • Best practices for managing service configuration

The different mindset about the cloud, how to pick the right things? Cloud applications typically use data that is dispersed across data stores. Managing and maintaining data consistency in this environment can become a critical aspect of the system, particularly in terms of the concurrency and availability issues that can arise. You frequently need to trade durable consistency for availability. In this module, you will learn: • How to select data storage types • Fundamentals of object and database storage services • How to handle data consistency in distributed cloud applications • How to version data schemas • Data backup, restore, and disaster recovery.

Jeffrey Richter is a Software Architect on Microsoft’s Azure team. He is also a co-founder of Wintellect, a software consulting and training company. He has authored many videos available on WintellectNOW, has spoken at many industry conferences, and is the author of several best-selling Windows and .NET Framework programming books. The best way to take in this subject is from the beginning because each subsequent video builds upon the earlier ones, however, if you are looking to learn about a specific area you can jump in at that point as well.

What is the container? How to do different networking communication?

orchestrators

transactions

auto-scaling

backup and restore

CDNs

containers

eventual consistency

Saga pattern

service API contracts

replicas

configuration

load balancers

messaging

versioning (code, APIs, and data schemas)

DNS

leader election

data caching

microservices

object and file services

SLAs

partitioning

12-factor apps

event sourcing

relational and non-relational databases

CQRS

data consistency

concurrency control

network

optimistic concurrency

proxies

Comments are closed