Hands-On Artificial Intelligence on Amazon Web Services
上QQ阅读APP看书,第一时间看更新

Understanding the architecture design principles for AI applications

Building elegant applications is not trivial, but building elegant AI applications can be even harder. As AI practitioners in a rapidly changing technology landscape, it's important to understand good architecture design principles and to have a passion for software craftsmanship since it takes relentless discipline to build and maintain applications that can adapt to the fast-evolving AI technologies. Good architecture design can easily adapt to changes. However, it is impossible to predict all future changes. Therefore, we need to rely on a set of well-accepted design principles to guide us on good application architecture. Let's go over them now:

  • A well-architected application should be built on top of small services with focused business capabilities. By small, we don't necessarily mean a small amount of code. Instead, small services should follow the single responsibility principle; that is, to do one or very few things well.
  • These small services are much easier to implement, test, and deploy. They are also easier to reuse and to compose more business capabilities.
  • A good application architecture should have well-defined boundaries to enforce separation of concerns.
  • The services and components of the application should maintain this separation by hiding internal implementation details from the others.
  • This separation allows services and components to be replaceable with minimal impact on the rest of the application, thus supporting easier evolution and improvement of the solution.

If you are new to software architecture design, the differences between good and bad designs might appear subtle. It will take you a lot of experience to acquire the knowledge and skills you need to truly appreciate good design. In this book, we will provide you with examples of elegant designs that are good starting points for AI applications.