System Design

Parallelism v.s. Concurrency

Another pair of terms that are easy to confuse are parallelism and concurrency. Parallelism has to do with many workers working simultaneously. Concurrency, on the other hand, is about being able to make incremental progress on more than one task.

Scalability v.s. Performance

The terms scalability and performance are sometimes used interchangeably, but they actually mean two entirely different things. Let’s make sure we understand the difference. Performance is about how well your application runs for one user.

Docker and the Rise of Microservices

As an application attracts more users, the ability to scale becomes paramount. The solution often is to decouple your application and turn you monolithic codebase into multiple microservices. Why is Docker a key component in this new architecture, and what does this all even mean?