Top 5 Challenges of IT Systems Every Software Developer Must Know

Nowadays, with ever increasing adoption to the usage of internet, using the technology has become so much easier than never before. We are mostly living in the online world where Google, Facebook, Amazon, Netflix and many such software systems have been integral part of our day-to-day life, and demand of such IT systems is going to be increasing in the future as well. 

Top 5 challenges of IT systems


If you are a complete beginner to the world of software, you will get to know something really important that everyone in the software field must know. If you are already into the software world, this article would help you to refresh your knowledge. We will try to understand how IT systems help us in the real-world and what are the common challenges of any IT systems.

Okay, generally IT systems are developed to make our lives easier with the help of technology. It can also help to add more value to our lives by solving some real-world problems. 

  • With help of google, accessing any type of knowledge has become so much easy, quick and instant.
  • Amazon has added ease to our shopping experience, and we can shop easily as per our convenience seating at home.
  • Facebook has made it easy to socially connect with people, and the example list of such systems is pretty long. We would not go into the details of it.

The most important thing to know here is, all such online businesses are mainly focused to solve some real-world problems and make human lives easy. And, when they are developing such giant IT systems, there are n number of factors they take into consideration to make the system much better. 

However, there are Top 5 challenges that each IT systems has to generally address and these challenges are mostly common for each and every IT systems. Also, these 5 challenges are the common terminologies that everyone working in software field must be aware of what exactly they mean. 
In this article, we will try to understand them in very simple words.

So, here are the top 5 challenges of any IT systems.

  • Availability
  • Scalability
  • Resiliency
  • Performance
  • Security

Let's now understand each one of them one by one.

Availability

Whenever you try to access Google or Facebook or Amazon, you may have found that these systems are always available for your use. You may have very rarely seen that you are not able to use them. Yes, that's what availability is all about. Whenever any IT system is developed, one of the key challenges is to how to ensure that the system is available to the users most of the time. 

If the system is not available whenever a user wants to use it, it may not leave a good impression on user, and user may select to use any competition systems that you probably may not want to let it happen. 

Hence, it is important to ensure that your IT system is available to the user. This is very generically we understood what availability is. 

Let us now understand it bit more technically.

Mainly, availability is the percentage of time the system is up and running and catering to the user requests, in the given time period. There are various possibilities which could lead the system to be down and not available. 

  • It could be lots of user trying to access the system at the same time, which has broken the system. 

  • It could be some network related issue that can cause the unavailability of the system OR

  • It could be some infrastructure related issue which can make the system unavailable and much more.

Hence, while building the IT systems, one must gauge the availability of the IT systems, keeping in mind the various factors which could make it unavailable. Availability is generally measured as following.

  • 99% available, means in a year of 365 days, system would be unavailable for 3.65 days.
  • 99.9% available, means in a year, system would be unavailable for 8.76 hours.
  • 99.999% available, means the system would be unavailable for 5.26 minutes in a year.
  • 99.99999 % available, means the system would be unavailable only for 3.16 seconds in a year. 

The more the system is available, you have addressed the challenge of Availability pretty well.

Scalability

Say for example, there is some mega sale coming on your favorite e-commerce website. The website expected around X number of users would be coming to their website on the day of the sale. However, to their surprise, almost 3X number of users were on the site on the day of mega sale. 

Of course, the system was not capable to handle this heavy traffic. This is called scalability issue in layman's term.

In technical terms, scalability is all about how the system can deal with unpredicted traffic to the system.

There are multiple aspects which needs to be considered to make the system scalable, such as computing power, data storage and so on.

You may have heard about horizontal scaling and vertical scaling earlier, right? They are basically how your system can be made scalable enough to cater to unpredictable traffic to the system. 

What is the difference between horizontal scaling and vertical scaling?

In horizontal scaling, you would add up more machines to serve the requests.
In vertical scaling, you would increase the resources on the same machine to handle and server more requests.

While building IT systems, scalability is also a key challenge that one should plan to solve effectively.

Resiliency

This one is really interesting. Let's understand it with a real world example. Let's say, in an interview you were asked a technical question and you were somehow not able to answer it. Now, how gracefully you handle this situation could be known as Resiliency in layman's term. 

I know a not a very good example, however, you got the point, right?

Let me give you some more realistic example. 

Let's say, you are trying to purchase a paperback book on amazon. And the microservice handling the requests to check the stock availability is down at that point of time due to some reason. Now, due to this the user should not be affected by showing some weird errors. 

Instead, this situation should be handled gracefully by the system and should let user know that, the book is unavailable at this moment and show some tentative dates when it would be available back. I hope this would have help you understand resiliency better.

In technical terms, resiliency is all about how the IT system gracefully handle any type of failures and also, recover from such failures at the earliest possible.

While building the IT system, taking care of making the system resilient is equally important.

Performance

One of the key challenge you should consider while building the IT systems, is to consider the performance of the system. 

Say for example, if you are trying to purchase some item from amazon, and it takes a long time to show up that item, would you as a user like that? Of course not. Right? Hence, IT system performance should be one of the major criteria you must take care of. 

Now, performance is also somewhat linked to scalability as well. If there is a huge traffic on the website, it can impact the performance as well. However, this can not always be true. Sometimes, the code can be a culprit to the performance issue as well. 

Now, I leave this up to you to think over a code problem which could cause a performance issue. Just think over it. Let me give you a hint, think about database query. Here you go.

While building IT systems, performance of the system should be on top of your list apart from making the system available, scalable and resilient.

Security

The fifth and the last challenge of an IT system is Security. When we say security, it means users' can safely use the system being rest assured that their data is completely secured. 

Banking system could be a very good example to understand this better. Let's say you deposited X amount in your bank account. Now, you will feel safe that your amount is secured in the bank. 

Not only that, whenever you will need it, you will be able to withdraw it from your bank without any hassle. Similarly, user's any data should be kept secure with the IT system adhering to all the required standards.

While building up the IT system, security aspect should never be kept behind. It must be well planned as a part of your architecture decision.

Final Thoughts

Availability, Scalability, Resiliency, Performance and Security. I hope these concepts are now clear and you know what exactly they are. These are the top 5 challenges of any IT systems. It's better to think about them from the initial phase of your IT system, It would certainly make the system more robust, mature and convenient to users. 

If you found the article useful, kindly do drop your feedback/thoughts at techfundas.in@gmail.com. Also, if you are a beginner, do check out these articles The Top 6 Myths You Should Stop Believing Now and How to Become a Successful Software Engineer? as well.