
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
|