Demystifying Microservices Architecture - Benefits and Challenges
Michael Pogrebinsky Michael Pogrebinsky

Demystifying Microservices Architecture - Benefits and Challenges

Did you know that over 80% of companies are modernizing their applications and adapting microservice architecture?

If you are a current or aspiring software architect wondering why Microservices Architecture keeps gaining popularity, you have come to the right place.

In this article, we will cover the benefits and challenges of Microservices Architecture and why the top tech companies are rapidly adapting it.

Read More
Best Distributed Caching Technologies for Architecting High-Performance Systems
Michael Pogrebinsky Michael Pogrebinsky

Best Distributed Caching Technologies for Architecting High-Performance Systems

One of the biggest difficulties in modern large-scale systems is the ever-growing volume of data and user interactions.

Companies are expected to grow but maintain the same high performance and responsiveness while keeping infrastructure costs within budget.

Caching is a powerful solution for optimizing the performance of large-scale systems.

In this article, you’re going to learn about the top distributed caching technologies for architecting high-performance, large-scale systems.

Read More
Top 5 AWS Services for High Scalability Every Software Architect Must Know
Michael Pogrebinsky Michael Pogrebinsky

Top 5 AWS Services for High Scalability Every Software Architect Must Know

With the ever-increasing demand from users and the need to handle unpredictable traffic spikes, scalability has become the biggest.

AWS has been offering services that simplify architecting and deploying highly scalable systems, allowing Software Architects to focus on innovative designs and building a profitable business.

In this article, we will cover the 5 most important AWS services any software architect needs to know to build highly scalable systems on AWS.

Read More
The 5 Reasons Why System Design Interview Questions are Hard and What to Do About It
Michael Pogrebinsky Michael Pogrebinsky

The 5 Reasons Why System Design Interview Questions are Hard and What to Do About It

System Design Interviews are an integral part of the hiring process for almost all tech companies.

However, most software engineers struggle with System Design Interviews. In the article, we will understand why System Design Interviews are so hard for even the most experienced software developers and, most importantly, what to do about it.

Read More
Top 5 Books for Software Engineers and Software Architects
Michael Pogrebinsky Michael Pogrebinsky

Top 5 Books for Software Engineers and Software Architects

Software engineers need to keep learning, continuously to be successful at their job.

In this article I will share with you the 5 top books for learning and improving your software architecture and software development skills.

Read More
Java PriorityBlockingQueue - Thread-Safe and Memory Efficient Concurrent Heap
Michael Pogrebinsky Michael Pogrebinsky

Java PriorityBlockingQueue - Thread-Safe and Memory Efficient Concurrent Heap

In this article, we are going to learn about a very important thread-safe and memory-efficient data structure implementation, the PriorityBlockingQueue. We will first start by comparing it to the traditional heap-based PriorityQueue implementation, and later we will see what concurrency and performance-related features and guarantees the PriorityBlockingQueue provides to us.

Finally, we will write some Java code to see how a PriorityBlockingQueue is used in a practical real-life example.

Read More
What makes JUnit the most popular Java Framework
Michael Pogrebinsky Michael Pogrebinsky

What makes JUnit the most popular Java Framework

JUnit is the most popular and widely used framework for unit testing in Java. Recent surveys show that it is also the most commonly included external library in Java projects.

In this article, we are going to explore the 2 features formula that makes any Java library a hit among Java developers.

Read More
Top 3 Tips to Improve your Java Application’s Performance
Advanced Java, Java Concurrency, Java Multithreading Michael Pogrebinsky Advanced Java, Java Concurrency, Java Multithreading Michael Pogrebinsky

Top 3 Tips to Improve your Java Application’s Performance

For many years Java had a bad reputation for being slow….throughout the years, there have been many advancements made in the JVM itself, that more than compensate for all those inefficiencies. And in recent years we see more and more companies use Java to develop low latency, high-performance applications for high-speed trading, scientific simulations, real-time bidding, mobile games, and more.

Read More
The Hidden Benefits of Java Multithreading
Michael Pogrebinsky Michael Pogrebinsky

The Hidden Benefits of Java Multithreading

When we think of the benefits of multithreading in Java, the following two often come to mind: high performance through parallel execution, and multitasking achieved through concurrency. However, there is a third benefit to multithreading that is often overlooked.

Read More
Apache Kafka for Modern Distributed Systems
Apache Kafka, Distributed Systems, Advanced Java Michael Pogrebinsky Apache Kafka, Distributed Systems, Advanced Java Michael Pogrebinsky

Apache Kafka for Modern Distributed Systems

With the growing popularity of digital services, many companies have to handle millions and even billions of requests per day. Depending on the digital product, those requests can come from third-party services that call their APIs or from real human users that use their online services. This large scale of operation forces software companies to abandon the traditional centralized software approach and migrate to distributed systems instead.

Read More
Top 3 Projects for Java Concurrency
Michael Pogrebinsky Michael Pogrebinsky

Top 3 Projects for Java Concurrency

The threading model is important for achieving high performance and responsiveness for your application, but getting it right is a challenge. In this article we’ll explore my top 3 picks for toolkits and frameworks for concurrency and multithreading.

Read More
Java 11 Removes stop() and destroy() Methods

Java 11 Removes stop() and destroy() Methods

In September 2018 Oracle finally released Java 11, following its 6 month release cycle. But why were those methods deprecated in the first place?

And how should we correctly stop threads?

Read More