background preloader

Software Architecture

Facebook Twitter

The Cloud Architect: A Necessary Evil? - DZone Cloud. The title “Architect” is a problematic one, as there are Data Architects, Infrastructure Architects, Application Architects, Technical Architects, Enterprise Architects (EA), and many, many more.

The Cloud Architect: A Necessary Evil? - DZone Cloud

However, as the drive to Modern (i.e., Cloud) Architectures continues, we are now seeing references to “Cloud Architects”. This title seems to be a necessary evil, as the move to cloud-based architectures is inevitable. Thus, “Cloud Architect” is destined to be a temporary designation, but a necessary one for now. Louis-Léopold Boilly [Public domain], via Wikimedia Commons What’s Makes Cloud Application Architectures Different?

Architects (of all kinds) had been focused on on-premises-based applications with a small component of the portfolio being SaaS or cloud-based. Unfortunately, traditional EA competencies (software design, integration patterns, security perimeters, SLDC) have not adequately prepared Architects for this shift. Finding the Silver Lining Example of "Bounded Context"[6] [3] [4] Microservice Design Patterns - DZone Cloud. The main characteristics of a microservices-based application are defined in Microservices, Monoliths, and NoOps.

Microservice Design Patterns - DZone Cloud

They are functional decomposition or domain-driven design, well-defined interfaces, explicitly published interface, single responsibility principle, and potentially polyglot. Each service is fully autonomous and full-stack. Thus changing a service implementation has no impact to other services as they communicate using well-defined interfaces. There are several advantages of such an application, but its not a free lunch and requires a significant effort in NoOps. But lets say you understand the required effort, or at least some pieces of it, that is required to build such an application and willing to take a jump.

Functional decomposition of your application and the team is the key to building a successful microservices architecture. Verb (e.g. This blog will discuss some of the recommended patterns on how to compose microservices together. Proxy Microservice Design Pattern. Software Architecture Review Guidelines. Introduction Reviews are an opportunity for others to eyeball your documents/design/code/software architecture and for you to inspect others' work.

Software Architecture Review Guidelines

They facilitate knowledge interchange. But their primary goal is to increase software quality. They help you to spot faults before they become real disasters. Software Architecture AntiPatterns. Architecture AntiPatterns focus on the system-level and enterprise-level structure of applications and components.

Software Architecture AntiPatterns

Service-Disoriented Architecture. “You can have a second computer once you’ve shown you know how to use the first one.”

Service-Disoriented Architecture

-Paul Barham The first rule of distributed systems is don’t distribute your system until you have an observable reason to. Teams break this rule on the regular. People have been talking about service-oriented architecture for a long time, but only recently have microservices been receiving the hype. The problem, as Martin Fowler observes, is that teams are becoming too eager to adopt a microservice architecture without first understanding the inherent overheads. Service-Disoriented Architecture. MonolithFirst. Evolutionary design · microservices tags: As I hear stories about teams using a microservices architecture, I've noticed a common pattern.


Almost all the successful microservice stories have started with a monolith that got too big and was broken up Almost all the cases where I've heard of a system that was built as a microservice system from scratch, it has ended up in serious trouble. This pattern has led many of my colleagues to argue that you shouldn't start a new project with microservices, even if you're sure your application will be big enough to make it worthwhile. .

Microservices are a useful architecture, but even their advocates say that using them incurs a significant MicroservicePremium, which means they are only useful with more complex systems. The first reason for this is classic Yagni. Enterprise Architecture. MSDN Library Servers and Enterprise Development.

Enterprise Architecture

Twitter Architecture. Toy solutions solving Twitter’s “problems” are a favorite scalability trope.

Twitter Architecture

Everybody has this idea that Twitter is easy. With a little architectural hand waving we have a scalable Twitter, just that simple. Well, it’s not that simple as Raffi Krikorian, VP of Engineering at Twitter, describes in his superb and very detailed presentation on Timelines at Scale. ZeroMQ. ZeroMQ is a messaging library, which allows you to design a complex communication system without much effort.


It has been wrestling with how to effectively describe itself in the recent years. In the beginning it was introduced as ‘messaging middleware’ later they moved to ‘TCP on steroids’ and right now it is a ‘new layer on the networking stack’. I had some trouble understanding ZeroMQ at first and really had to reset my brain. First of all, it is not a complete messaging system such as RabbitMQ or ActiveMQ. I know the guys of Linden Research compared them, but it is apples and oranges. Wikipedia on HHVM « HHVM. Posted on January 6, 2015 by Brett Simmers If you’ve been watching our GitHub wiki, following us on Twitter, or reading the wikitech-l mailing list, you’ve probably known for a while that Wikipedia has been transitioning to HHVM.

Wikipedia on HHVM « HHVM

This has been a long process involving lots of work from many different people, and as of a few weeks ago, all non-cached API and web traffic is being served by HHVM. This blog post from the Wikimedia Foundation contains some details about the switch, as does their page about HHVM. I spent four weeks in July and August of 2014 working at the Wikimedia Foundation office in San Francisco to help them out with some final migration issues. While the primary goal was to assist in their switch to HHVM, it was also a great opportunity to experience HHVM as our open source contributors see it. Most of my time at Wikimedia was spent working on some fixes for HHVM’s DOMDocument support. The other tweak was also quite simple. Http-headers-status-v3.png (3138×2184) Software Architecture AntiPatterns.