Microservices is an emerging software architectural style that is meant to deal with many of the limitations of contemporary monolith applications. In the recent years, this architectural style has become the preferred choice for building large and complex heterogeneous software systems. Many companies identify microservices as a means to build competitive advantage. Main reason for this is the flexibility that the microservice approach provides in terms of developing software intensive systems. Companies that incorporate microservices claim to be able to respond much faster to changing business environment. Microservices have both technical and cultural aspects. They provide a great flexibility in selecting the proper technologies. On the other hand, they result in a culture shift in each organization. Developers tend to become more productive and reduce the total number or defects. This paper makes an overview of the microservices architectural style for developing software intensive systems and analyzes the key aspects that result in improving the business performance. It discusses the main characteristics of microservices and provides guidelines on how to apply them in real business scenarios.