Category: App Architectures

Is AI Code Automation Contributing to Code Complexity?

GitHub has published research on the growth and impact of AI on software development. Among their findings is that developers write code “55% faster” when using the GitHub Copilot code automation tool. But this finding doesn’t tell the whole story. Is this code high-quality? Is this code necessary? Is the code contributing to the long-term value of our applications? Does the code contribute to the operation of the application in a clear and concise manner? In other words, is Co

Why increasing complexity actually can decrease complexity

In the dynamic world of software development, complexity is often viewed as the arch-nemesis of productivity and efficiency. Yet, here lies the paradox: embracing complexity can actually pave the way to simplicity. How can this be the case? Let’s focus a bit on complexity in software development. We can often think of complexity as a big, tangled ball of yarn. The more you pull on one thread, the messier it gets. Now imagine breaking up that big ball of yarn into smaller, neat little bun

Planned Outages are Still Outages

Don’t be fooled into thinking your site is highly available when it isn’t. Planned and regular maintenance involving unavailable applications still counts against availability for those applications. After all, from your customer’s viewpoint, your application is still unavailable. The fact that you planned that it would be unavailable is not important to your customers. I often hear companies using routine maintenance windows as an excuse. Usually, the argument goes like this:

Don’t stop your migration!

Are you planning an application migration? Perhaps you are moving your on-premise application to the cloud, or perhaps you are modernizing an older application to a more appropriate application architecture. Migrations such as these are commitments. Commitments of time. Commitments of resources. Commitments of mindset and corporate energy. They can involve long and evolved transitions. They involve lots of effort—an effort that does not directly, immediately correspond to a realized benefi

Why you should use a microservice architecture

Your application is large. You have many customers, and they make good use of your many features and capabilities. You have a large catalog of products, and your store is big and feature-rich. You are doing well. Except, you are having problems. Your application crashes too often. Your developers are always on it when it fails, and they are very fast at fixing your site, but it takes time and energy. You are down at least once a month or so—and you can be down for hours at a time. Imagine

Can a Cloud Center of Excellence Help You Become Cloud Native?

Cloud computing has changed the fundamental structure of the enterprise IT department. While the benefits of cloud computing are well understood, effectively integrating the fundamental changes required to support cloud-native architectures properly is not as universally well-known. Enter the Cloud Center of Excellence (CCoE). The CCoE is an organizational structure designed to drive acceptance and adaptability of cloud constructs into the enterprise IT processes. The CCoE is a fundamental restr

How to build and manage a cloud center of excellence

In the dynamic landscape of modern business, the adoption of cloud-native technology has become a cornerstone for achieving unprecedented scale and agility. For organizations devoted to harnessing the full potential of cloud-native applications, the establishment of a Cloud Center of Excellence (CCoE) is a common first step in this cloud-native journey. In the past, I’ve written about why building a CCoE will help your organization perform the necessary transformations. But once you’v

👻🏚️🎃 ScaryOps: The 3 Scariest Mistakes Companies Make in the Cloud

.button-table { padding: 12px 0 } First, there was DevOps. Then, ModernOps and CloudOps. Now, there is ScaryOps. Welcome to the special Halloween Edition of the Modern Digital Business podcast. In this episode, the 3 Scariest Mistakes Companies Make in the Cloud. It's time to turn our attention to scary things…scary movies, scary TV shows, scary home decorations, scary costumes. But when it comes to working with customers and clients on their cloud projects, sometimes I get quite scare

Do you need a cloud center of excellence?

In the past few years, cloud computing has become a dominant trend in enterprise IT. The benefits of moving to the cloud are clear: lower costs, increased flexibility, and improved scalability. But as more companies move their infrastructures into public clouds such as AWS or Azure, they face a challenge that is often overlooked: How do they transform an organization from a typical on-premises company to a cloud-native, cloud-centric organization? A cloud center of excellence (CCoE) is an organi

Does using low code mean your application will become overly complex?

​Low code has received a lot of press recently. There seems to be quite a debate about whether the use of low code makes the application development process better or if it interferes with the development process, resulting in inferior applications. I read an article recently that talked about how an inevitable outcome of using Low Code was application complexity. Further, this application complexity leads to increased difficulty with security issues. This article got me thinking. I’ve be

Don’t Let Your Application Turn into Another Winchester Mystery House

Some time ago when I was living in Silicon Valley, I often drove by a curious-looking structure called the Winchester Mystery House every day on my way to work. The Winchester Mystery House is a San Jose mansion that was once the home of Sarah Winchester, the widow of William Winchester, and the heir to the Winchester Rifle fortune. Originally purchased in 1884 as an unfinished eight-room farmhouse, it was expanded over the course of 36 years to an overall footprint of 24,000 square feet.&nb

Five Best Practices for Managing Configurations in Cloud-Native Applications

Managing configuration information in a complex, cloud-native application can be daunting. There is seemingly configuration everywhere. There’s configuration describing the network interconnections in your system, including routing rules and port blocking. There’s configuration for your load balancers, determining where to send traffic destined for your service. There’s configuration for security permissions needed for databases, caches, servers, third-party applications, a

Don’t let your services become Trojan Horses

Cloud-native applications make heavy use of services and microservice architectures. Distributed applications provide many benefits to modern application development processes and lend themselves particularly well to applications deployed in the public cloud. But microservices can also create additional and unwanted vulnerability points that bad actors can leverage to compromise your application. A single compromised service, no matter how small, can lead to vulnerabilities that can be exploited

Moving Beyond the Microservices Hype

In the fast-paced world of software development, buzzwords and trends often dominate discussions around application architecture. One term that has garnered significant attention and, at times, confusion is microservice.  While the concept of breaking down applications into smaller components has significant value, as anyone who reads my writings regularly will attest, there is also significant hype around the term microservices itself that leads to misconceptions and oversim

Identity, trust, and their role in modern applications

In the software world, identity is the mapping of a person, place, or thing in a verifiable manner to a software resource. Whenever you interact with nearly anything on the internet, you are dealing with identities: Facebook identity Email address Login name and password for a website Everyone has multiple identities—multiple ways that people know who you are and interact with you in the virtual world. Here are a few of my identities: Twitter: @leeatchison LinkedIn: leeatchison

What cloud-native means for your business

​ From manufacturing to transportation to retail, companies across virtually every industry are supporting their digital transformations by moving to a cloud-based infrastructure. The shift from on-premises software to cloud services has been revolutionary to the process of application development and deployment, especially software-as-a-service (SaaS) applications. But using the cloud often isn’t enough. You need to leverage cloud-native applications to benefit from the improved agility,

5 Rules for Getting Your Data Architecture Right

Architecting modern applications is a tough job, and architecting a solid data model for modern applications is one of the toughest, yet most important, parts of modern application architecture. Failure to create a reasonable data architecture can cause your application to fail in many bad ways, including issues related to performance, data integrity, data sovereignty, data safety, and scalability. Poor data architecture can leave your application and your company in bad shape. Building a prope

What is the color of your money?

Consider the following story: “I went into my CEO’s office. Our CEO is a very driven, technical, hands-on CEO. All technical decisions have to go through him before the company goes forward with a plan. Today, the discussion was about the cloud. The problem? The CEO said we couldn’t move our application to the cloud because it was too expensive. His evidence? ‘If you compare the cost-per-hour of a cloud-based server instance to the monthly costs we pay for our servers,

What is Software Architecture Insights?

Software Architecture Insights is a regular newsletter providing insights into architecting your modern applications at scale. Modern digital businesses continually struggle with building new and innovative applications that also maintain high availability at cloud-scale. Software Architecture Insights gives you, well, insights into how tech leaders and software architects function effectively. Learn how to build, operate, and maintain applications at scale, innovate new features and capabilitie