Microservices Anti-Patterns

Dallas Monson Agile, Articles, Consulting, Microservices 1 Comment

Microservices? Yeah, you’re doing it wrong.

Microservices is a silver bullet, magic pill, instant fix, and can’t-go-wrong solution to all of software’s problems. In fact, as soon you implement even the basics of microservices all of your dreams come true; you will triple productivity, reach your ideal weight, land your dream job, win the lottery 10 times, and be able to fly, clearly.

While this sounds like a lot of hyperbole wrapped up in some BS, if you have been listening to anything around microservices recently you will most likely have heard something not too far from this exaggerated sentiment – especially if it is coming from sales folks.

As a result of this, you or someone you know will likely have been charged by management to implement a solution in microservices or refactor an existing application to take advantage of microservices to ensure that you get all the magic. With so much overinflation of the truth out there, chances are you may have also implemented a microservices antipattern. These antipatterns are actually more common in the wild than fully functional microservices architectures.

Overview
In this post we will cover the most common antipatterns that I have witnessed in the wild:

Break the Piggy Bank
Everything Micro (Except for the Data)
We are Agile! a.k.a. The Frankenstein

Each one of these results from a common misconception. We will do our best to define these patterns and their symptoms. After each, we will also show a way out of the mess so that you can recover and begin to move towards a better implementation. Let’s get started!

Lean Mean Vue Machine

Chris Berry Articles, Development Technologies & Tools, JavaScript, Vue.js Leave a Comment

The year is 2019 and Command Line Interfaces abound for many of the big name JavaScript frameworks such as Angular CLI, Create React App, and the Vue CLI.

But wouldn’t it be nice to go back to the days when you could just drop a simple script tag on a page and be able to run an application? Well, here is my attempt in trying to accomplish just that.

In this post, we create a working Vue.js web application with standard CRUD functionality and deploy it without any extra dependencies other than the actual application itself.

.NET Memory Management with dotMemory

Jason Schmidtlein .NET, .NET Core, Articles, Development Technologies & Tools 3 Comments

Given the maturity of the .NET Framework and the automated nature of its memory management, many developers are guilty of glossing over (or even outright ignoring) whether their code is optimal in terms of CPU and memory usage. Personally, I have caught myself making sure my code is maintainable, testable, and extendable while forgetting to consider memory management in terms of nonfunctional aspects.

While the .NET runtime does a great job and memory corruption is extremely rare, we should still be concerned with memory management, particularly in large-scale .NET base applications.

This concern isn’t limited to on-premise applications. It’s easy to forget about memory usage with cloud computing. Azure Functions and AWS Lambda have billing structures based upon the average memory size per second of function execution. The direct correlation between memory usage and cost couldn’t be more transparent.

Fortunately, there are many great tools to help profile and analyze your memory footprint. JetBrains has a fantastic tool called dotMemory which makes it easy to profile processes, auto detect issues, perform deep analysis, and determine traffic. dotMemory can be installed as either a stand-alone tool or as a part of the ReSharper package integrated into Visual Studio.

In this post, we’ll show how to use dotMemory to generate a memory profile and analyze a memory leak in a .NET Core application.

Keyhole Software Earns AWS Consulting Partner Status

Keyhole Software Articles, AWS, Cloud, Company News, Consulting, Keyhole Leave a Comment

We are proud to announce that Keyhole Software has earned its status as an Amazon Web Service Consulting Partner.

Keyhole Software is now a Standard Tier Consulting Partner in the Amazon Web Services (AWS) Partner Network (APN), joining an elite group of technology partners nationwide. The partner network consists of professional services firms that help customers design, architect, build, migrate and manage their workloads on AWS platforms.

Keyhole earned the APN Standard Consulting Partner designation due to a demonstrated level of expertise with the AWS platform through a combination of customer testimonials, professional certifications, and investments in employee educational programs. Companies that have gained this status have demonstrated deep expertise in delivering customer solutions on AWS…. 

Flow: A Static Type Checker for JavaScript

Lou Mauget Articles, Development Technologies & Tools, JavaScript, React Leave a Comment

In this post, we’ll discuss the concept of types, compare static and dynamic types, and show an unobtrusive type inference package provided by Flow.org.

Facebook developed and maintains Flow. The package provides static typing to normally late-bound JavaScript code, including React code. It provides this analysis to a JavaScript application, even if it is an existing application.  Flow operates by carrying out a static abstract syntax tree (AST) analysis of type flows at build time.