Skip to content
Search

Clean Architecture

lastmod 2025-11-26created 2025-11-042 edits

Clean Architecture is a system architecture proposed by Robert C. Martin, author of Clean Code, a book most developers have heard of at least once. It offers a design that breaks free of the dependencies found in traditional layered architecture.

About

Let's look at the well-known blueprint that comes up most often when you search for Clean Architecture.

Clean_Architecture.png

Clean Architecture treats boundaries as the most important thing. Robert C. Martin describes boundaries as follows.

소프트웨어 아키텍처는 선을 긋는 기술이며, 나는 이러한 선을 경계(boundary)라고 부른다.
경계는 소프트웨어 요소를 서로 분리하고, 경계 한편에 있는 요소가 반대편에 있는 요소을 알지 못하도록 막는다. - Robert C. Martin, Clean Architecture

The direction of the arrows indicates dependency. In Clean Architecture, dependencies point from the outside inward, and outer circles do not affect inner circles. The farther out from the boundary, the less important and more detailed the area; the farther in, the higher-level (more abstract) it is.

Frameworks & Drivers

  • Details unrelated to the system's core business.
  • Frameworks, databases, web servers, and the like belong here.

Interface Adapter

  • Made up of a set of adapters.
  • Converts data coming in from external interfaces into a form convenient for use cases and entities to process, and converts data going out of use cases and entities into a form convenient for external interfaces to process.
  • Controllers, presenters, gateways, and the like belong here.

Use Cases

  • Contains application-specific business rules.
  • Encapsulates and implements all use cases of the system.
  • Coordinates and manipulates the flow of data into and out of entities.

Entities

  • Encapsulates core business rules.
  • An object with methods, or a set of data structures and functions.
  • The area that changes least and is not affected by the outside.

See also

Favorite site

author Zer0 sitemap