What are Microservices?

One of the core principals of Software Development is to try and build re-usable code.  With the introduction of the cloud, we are starting to see software that is more centralized and repeatable.  Instead of building a piece of software for each individual business, software developers are working towards building software that can be used by all companies but tailored to each individual business need.  The cloud itself is nothing more than a centralized server host.  You can purchase space or processing power from these hosts instead of having to maintain the hardware on site.

Along with being able to host a server at another location, these hosts are starting to allow tailored services instead of just raw hardware.  This means that instead of buying a server and installing all the necessary tools to host a website, you can simply purchase a website.  The website is also more cost-effective because the server host is managing the server and optimizing it to host multiple websites.  They end up making more money off a single piece of hardware and you end up paying a lot less because you are not under-utilizing and over-paying on a piece of hardware.

How do Microservices help our business?

The microservice concept is a design pattern with the idea of utilizing these spaces.  Each application is developed with service-oriented architecture and broken out services with the intent of re-using these services in a cloud environment.  In the past, you may have developed an entire piece of software with one goal of entering a sales order for example.  With a microservice, you may create many tiny services in this application such as: obtaining a product description, calculating a product price, calculating tax, etc.  The intention here is that in another application you may pick that same service up and use it again.  If at any point you find a bug in how you calculate a price, you can fix that microservice and all your applications are now fixed. The cloud stage of this development practice is to move these microservices to a cloud-hosted space and utilize them in all your external cloud-hosted applications. 

Recently our company developed a shipping algorithm to calculate shipping costs across multiple vendors. This involved pulling in rates from UPS, FedEx, USPS, and a smaller known third-party vendor and comparing rates. The best of the rates was presented to the customer and the customer got to choose which rate was used in that order. The shipping system was also sensitive to repeat larger customers, allowing shipping discounts and freighting functionality. Our company chose the path of developing this application using microservices methodology.

Every step of the application was developed as a microservice: the shipping APIs, the company’s configurations, the taxing, the customer information, etc. The application was used for many years and at some point, the customer decided to change their CRM to a cloud-based SalesForce setup. The nature of the Microservices allowed us to simply make a call to the Microservice with the new SalesForce information and return the same shipping information. In addition to that, when the orders from SalesForce were integrated to their Dynamics NAV system they were able to utilize the customer service to fetch additional information and pass across custom pricing/vendor information for customers.
Microservice development not only allows your business to develop software in an effective manner but offers a vast amount of re-usability in other aspects of your business. Often when you develop a piece of software you are focused on that specific section of the business, but as software developers, we need to understand that we are not just developing a piece of software but helping the business enhance their knowledge. This knowledge can be spread across all aspects of the company and used to help advance other software even if that was not the original intent.

Why are Microservices important to use in software?

The core of software development is to interpret a human need to a computer.  As computing progresses so much software developers and people alike.  It is important to break down each piece of software into a service so that we may keep moving forward in our work.  Our code can always be replaced, but rather than introducing new code that has a need to be replaced we should start developing code that can be scaled.  Microservices is the next wave of scaling code and functionality.