Are your workloads using the latest Cloud technologies?
Companies moving workloads to the Cloud often are doing so with a monolithic approach because that is the traditional mindset of IT architectures. Using this approach adds risk for availability, agility, and cloud vendor lock-in.
By taking a micro services architecture approach, scaling, availability, and portability between cloud providers becomes easier to achieve.
Cloud services and cloud hosting have been around for over twenty years, and I loosely define Cloud as “using somebody else’s servers.” As an early adopter of “using somebody else’s servers,” I saw potential in the Cloud and selectively subscribing to hosted / SaaS offerings, with email and CRM being the first prime candidates.
Subsequently, as a managed service provider, I moved my own hosted / SaaS offerings onto someone else’s servers, which at the end of the day was just a shift in where I was running my virtual infrastructure. My day-to-day processes and procedures were the same, but now I did not have to worry about managing a data center and various co-location facilities. Hosting infrastructure in the Cloud presented new challenges for staffing, auditing, and governance, but overall, this shift benefited my customers, company, and IT staff.
Each step of the way, the big cloud players, Amazon, Microsoft, and Google, have been advancing and maturing their service offerings to the point now where it is entirely feasible to migrate and run a Cloud only company without much effort. The pace of advancement is challenging to keep up with as these agile companies push out new capabilities on an almost daily basis.
Here are a few of my favorite micro services I believe every company can take advantage of now.
Server-less Functions – AWS Lambda, Azure Functions, Google Cloud Functions
I recently had a requirement to allow a new application to query an existing data pipeline for results. Using a current 3rd party integration feature in the new application and leveraging the Azure Functions API capability to create a new endpoint allowed the new application to post queries to our existing data pipeline without any modifications to either system. This custom integration only took a matter of a few hours to develop, test, and deploy.
Application Services – AWS Elastic Beanstalk, Azure App Service, Google App Engine
Web apps without the headache of the web server. With a few exceptions, all these services work with the following application environments: .NET, .NET Core, Node.js, Java, Python, PHP, Ruby on Rails.
What continues to impress me about these services is the breadth of application environments added and how seamless it is to take an existing web application to run server-less and work with little to no effort. I highly recommend you investigate these application services and ditch your traditional web servers.
Database Services – AWS, Azure, GCP: Too many to list
Relational, Key-value, in-memory, document, wide column, graph, time series, and ledger database type. It is all there; take your pick.
The one thing I love more than not having to manage a data center full of gear is not having to manage a database server. When managing database servers, I had more service outages caused by some database HA feature issue than anything else in my environment.
When database services first launched, the performance was decent but often did not scale well. Today these fully managed purpose-built database services perform at scale, are secure, and highly available. If you have not investigated these services in the last year, I believe it would be worth your time to look at them again.
Implementing a micro services architecture does not need to be difficult as long as you understand common concerns and design around them. It is entirely possible to use the services above and end up with another monolithic application tied to one cloud vendor. One key to designing a robust and flexible micro services architecture is to keep your reliance on one cloud vendor’s technology to a minimum. Have a good understanding of your reliance and plan, ahead of time, how to break the dependencies if you need to move providers or expand to new providers.
Adopting a micro services architecture puts you in a better position to deploy Cloud agnostic solutions with minimal modifications allowing you to move between cloud providers or deploy to multiple “redundant” cloud providers for a potent decentralized service model.
The pace of micro services architecture is advancing very rapidly, and these services are continually adding enterprise-level capabilities and, in many cases lowering the cost of these services. My recommendation is to stay up to date with micro service offerings offered by the major cloud providers and do what you can to avoid using a cloud service provider as just another server virtualization service.