Being a Technology Agnostic

I will give you a secret how to keep your IT systems always up-to-date.

I’m Serkan Karaarslan working in IT field for 15 years and have seen all since internet bubbles, back to 2000. I worked as a coder, developer, an engineer and architect in every size of company, from startups to big corporate organization. I strongly believe that I have words to say about IT world.

It’s an always a nightmare to decide a technology for your business, especially in a big corporate world. When any system is implemented in a giant organization it’s hard to replace with a new one. Such as selecting ecommerce platform, CRM or CMS. Since the technology, approaches and solutions are changed almost every 5 years drastically, you would be criticized heavily for your choice. Even if you do the best, what you select will be outdated in 4–5 years. I will tell you in that article how to avoid all and be remembered mr. or mrs. who had picked the right always.

Evaluation of Frontend

I clearly remembered that in 1998, I used javascript to check form validation and write text on browser status bar. and most of the people are thinking that’s how javascript can be utilized. Then Google uses first time XMLHttpRequest to make a call to web server asynchronously without page loading. It was a wow! moment. We still use XMLHttpRequest but to retrieve JSON not XML anymore. It’s totally wrong name. It should have been HttpRequest. Then some javascript frameworks were released like YUI, jQuery and others I don’t even remember their names. in 2006, we learned that we could do more with javascript. Today we’re able to implement an MVC in client side thanks to angular and react frameworks with same language, javascript. I could not predict what javascript would be today and I don’t know what will happen in 5 years. What I’m trying to say is that there is nobody who can make a right technology choice for next 5 years.

Evaluation of Backend

Same for backend development. First spaghetti code especially for web. All business logic and accessing to data source are in HTML, which is called “view”. It was so common approach before 2000. Then we separate concerns and add application logic in a business layer and all connection to database via repository layer. It worked. We call it MVC. But scalability issue arose. We added a net scaler in front of the web servers where all layers in a same server and multiplied them horizontally. Simply we scaled up. We notified, if we separate layers into different servers then we can scale out properly. It’s called n-tier architecture. Most of the time these servers are in the same network infrastructure to ensure there is a minimum latency between servers. Then SOAP architectural approach was trend to distribute our applications. SOAP is good but it’s not easy to manage and not easily consumable by client side such as in javascript. Then REST is invented. It’s much lightweight and fits HTTP well. Today almost all developer APIs are built on REST approach.

Microservices

With the help of cloud platforms, today, microservices are the new trends. Some people thinks that it’s a fad. I value their opinion but I have to disagree. Microservices applies most basic software design principles which are single responsibility, open-closed design principles and dependency inversion principle.

There are enough cases to convince you to move away from monolith architecture to microservices. Netflix has 600 microservices while amazon has around 150 microservices to build their pages.See the video, https://youtu.be/WwrCGP96-P8?t=23m3s

Monolith applications are like to buy your jeans, t-shirts, underwear, socks and shoes from a same brand. You never do that because some brands are good at jeans and some of them crafts really nice shoes.

Simply a monolith application is one package, are written with same code and works in a same platform. You have to tailor your application with the existing platform capabilities. Your boundaries are depend on your platforms’ capabilities. For instance, if you want to add a nosql system like cassandra or mongodb but your platform migh not allow to install these databases. The only way is to change your platform. But then new platform will come with its limitations. It’s like infinite loop. The only way to overcome these issues is microservices.

Microservices are answers to :

  • how to stay competitive
  • how to adapt new technologies quickly
  • how to increase release frequency from weeks to hours
  • how to change codes without impacting other codes
  • how to build new features easily
  • how to decrease build time
  • how to become technology agnostic

Simply you can decompose your monolith applications into a several, meaningful services which can be built with different tools,system,framework and code. By doing this, you can select the best technology to fit your service without impacting negatively other services. In future, you can replace it with a better one.


None of the thoughts, ideas, comments and whimsical things I post or write here are the views of my employer. This is originally published on my blog, http://serkankaraarslan.com/post/141513843540/being-technology-agnostic

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.