Clean Architecture

안드로이드 애플리케이션 개발: Clean Architecture의 기본 원칙과 Java 예제를 통한 이해

person holding black android smartphone

먹을것들의 수많은 댓글을 통한 요청으로 안드로이드에 관련한 주제로 글을 써보려고 한다.

안드로이드 애플리케이션 개발은 다양한 아키텍처와 패턴으로 이루어진다.

그 중 Clean Architecture는 코드의 구조화와 유지보수성, 테스트 용이성을 중점으로 한 패턴이다.

이 글에서는 Clean Architecture의 기본 원칙과 Java 예제를 통해 이 아키텍처를 깊게 이해본다.

Clean Architecture란?

Clean Architecture는 애플리케이션의 구조를 여러 계층으로 나누어 각 계층이 독립적인 역할을 수행하도록 하는 아키텍처 패턴이다.

주요 계층은 다음과 같다:

  • Entity: 비즈니스 로직을 담당하는 모델 객체이다.
  • Use Cases (or Interactors): 애플리케이션의 비즈니스 로직을 정의한다.
  • Interface Adapters: 데이터 변환과 같은 인터페이스를 적용한다.
  • Frameworks and Drivers: UI, 데이터베이스, 외부 API 등의 구체적인 구현을 포함한다.

Java 예제로 Clean Architecture 이해하기

1. Entity

public class User {
    private final String id;
    private final String name;

    public User(String id, String name) {
        this.id = id;
        this.name = name;
    }

    public String getId() {
        return id;
    }

    public String getName() {
        return name;
    }
}

2. Use Cases

public class GetUserDetailUseCase {
    private UserRepository userRepository;

    public GetUserDetailUseCase(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public User execute(String userId) {
        return userRepository.getUser(userId);
    }
}

3. Interface Adapters

public interface UserRepository {
    User getUser(String userId);
    void saveUser(User user);
}

4. Frameworks and Drivers

여기서는 안드로이드 액티비티를 간단하게 예시로 들었다.

public class UserDetailActivity extends AppCompatActivity {
    private GetUserDetailUseCase getUserDetailUseCase;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_user_detail);
        // ... 초기화 로직
        User user = getUserDetailUseCase.execute(userId);
        displayUserDetail(user);
    }

    private void displayUserDetail(User user) {
        // UI 업데이트 로직
    }
}

Clean Architecture의 장점

  1. 독립성: 각 계층은 독립적으로 운영되므로, 변경과 테스트가 쉽다.
  2. 재사용성: 비즈니스 로직은 프레임워크나 UI와 독립적이므로 재사용이 용이하다.
  3. 유지보수성: 구조가 체계적이므로 코드의 유지보수가 쉽다.

참고하면 좋은 자료

안드로이드 공식문서이다.
천천히 읽으면서 참고하면 Clean Architecture의 전반적인 구조를 이해하기 좋다.
Android Developer – App architecture guide

NHN 밋업문서이다.
이 글과 위의 안드로이드 공식문서를 전체적으로 읽고 이해한 뒤, Clean Architecture의 개념 고도화를 위해 참고하면 좋다.
[Android] 요즘 핫한 Clean Architecture 왜 쓰는 거야?

마치며

Clean Architecture는 안드로이드 애플리케이션의 복잡성을 관리하는 데 있어 효과적인 방법이다.

개발자로서 이 아키텍처를 학습하고 실제 프로젝트에 적용하면 큰 도움이 될 것이다.