Is Abstraction a solution for most of your complex problem

Let’s try to find the hidden meaning in the above image. It says, Ummm🧐

After 2hours 😵😵

Damm!! It is so tough to figure out the meaning.

It’s tough for me to understand the hidden meaning of that painting. But Why is this so hard? Its because the author has done a very great job in hiding, actual purpose, which he was thinking at the time of painting. Now it’s up to the buyer, whether he/ she wants to interpret something, or simply want to hang this in his/ her living room, and simply enjoy the view.

Actually above painting is an abstract view of something, and it can be interpreted in many ways. But I unable to think of any :disappointed:

By now, we have got the idea of what Abstraction is. Let try to define it using the above example.

What is Abstraction?

In general, Abstraction is the surface of the ocean; in actuality, it is profound, and most of us don’t know what’s at the bottom of the sea.

What is Abstraction in terms of software engineering?

Let’s say there are two problems, Problem 1 and Problem 2, and Problem 2 is dependent on Problem 1 (i.e., Problem 2 can only be solved if we have a solution for Problem 1). Sam only knows how to solve Problem 2. But our hero Sam is smart, he found an implemented version of the solution for Problem 1, and without worrying about the implementation, he simply used it, so that he can solve Problem 2.

Abstraction hides the complex implementation from the user so that the user can focus on his problem only.

My first encounter with word ABSTRACTION happened when I was studying the OOPs concept. I believe this is the same for most of us. Since then, I have seen an actual implementation of that word so many times.

Let’s talk about some practical implementation of Abstraction

Approx, from the Past 15 years, we are using different cloud solutions provided by a different provider. If we look closely, Cloud has provided an abstraction layer on the top of the underlying hardware (i.e., a user doesn’t need to interact with actual hardware). Various types of Cloud (IaaS, PaaS, SaaS, ..) are just adding abstraction layers on the top of the previous, to make the life of users easy.

  • IaaS is an abstraction on the top of the underlying hardware.

  • PaaS is an abstraction on IaaS

  • SaaS is an abstraction on PaaS.

If we go deep in cloud technologies, there are so many abstraction implementations available.

  • Kubernetes provides so many abstractions in the form of pods, service, Volumes, Deployment, DeamonSet, Jobs, etc.

  • Kubernetes can also be utilized to provide an abstraction to underlying Infrastructure.

  • APIs provide abstraction by hiding the implementation of Business logic.

  • Business Logic is a kind of Abstraction layer for underlying databases.

These are just a few of the many abstractions implementation, which I have quoted above.

There are some other benefits of Abstractions as well.

  • It helps companies to focus on business logic.

  • It provides a clear separation of roles like if we have the right level of abstraction on the top underlying infra, then the dev team can focus on solving business problems, and the ops team manages the infra.

  • It provides the pathway for easy upgrades in software and underlying architecture.

  • It helps in scalability and maintainability.

As far as I can say, Abstraction has provided a solution to many of the complex problems in the IT industry.

So Next time you came across any problem, check whether you have the right level of abstraction or not in your implementation.

Happy Abstracting🙂🙂

Comments and feedback are most welcomed.

Please follow me on Linkedin, Github, and join our newsletter to keep yourself updated.

Thanks for reading. Happy Learning 😊


Recent Posts

See All