본문 바로가기
개발

[Architecture] Architectural Tactics과 Architectural Style 차이점

by ▶ Carpe diem ◀ 2024. 3. 18.

이번 글에서는 Architectural Tactics과 Architectural Style의 차이점에 대해 알아보고자 합니다.

 

 

목차

     

    Architectural Tactics과 Architectural Style 차이점

    Architectural Tactics과 Architectural Style의 차이점에 대해 알아보고자 합니다. Architectural Tactics는 Architectural Style과 더불어 소프트웨어 아키텍처 설계의 중요한 요소입니다.

     

    먼저 Architectural Style 에 대해 알아보겠습니다.

     

    Architectural Style

    Architectural Style은 시스템의 구조를 정의하는 데 사용되는 패턴이나 방식을 말합니다. 이것은 시스템의 구성 요소(components), 그들 사이의 연결(connectors), 그리고 그들이 상호 작용하는 방식(interactions)에 대한 고차원적인 틀을 제공합니다. 각 스타일은 특정 아키텍처의 문제를 해결하기 위해 고안되었으며, 다양한 시스템에 적용되는 일반적인 원칙과 가이드라인을 포함합니다.

     

    자세한 내용은 다음 글을 참고하세요.

     

    [Architecture] Architectural Style 이란?

    Architectural Style 정의, Architectural Style 이 중요한 이유, 대표적인 Architectural Style 들에 대해 알아보고자 합니다. 목차 Architectural Style 이란? Architectural Style 의 개념은 다양한 연구자들에 의해 발전되

    wide-shallow.tistory.com

     

     

    Architectural Tactics

    소프트웨어 아키텍처의 핵심 요소 중 하나인 Architectural Tactic은 소프트웨어 시스템의 품질 속성을 개선하고 목표를 달성하기 위해 설계 단계에서 적용되는 세부 전략입니다.

    Architectural Tactics
    Architectural Tactics

     

    Architectural Tactic은 시스템의 신뢰성, 성능, 보안 등과 같은 특정 품질 요구사항을 충족시키는 데 필수적입니다. 이러한 Architectural Tactic은 시스템 설계에 명확한 지침을 제공하여, 잠재적 문제를 사전에 방지하고, 유지 관리와 확장성을 용이하게 합니다.

     

    Architectural Tactic 중요성

    소프트웨어 개발 프로젝트의 성공은 그것을 사용하는 사람들의 경험에 크게 좌우됩니다. 사용자의 기대를 만족시키기 위해서는 시스템이 높은 가용성을 유지하고, 빠른 응답 시간을 제공하며, 안전하게 정보를 보호할 수 있어야 합니다. 아키텍처 태크틱을 통해 개발자와 아키텍트는 이러한 품질 목표를 달성하기 위한 구체적인 방법론을 갖게 됩니다.

     

    따라서, Architectural Tactic의 선택과 적용은 소프트웨어 시스템의 성공에 결정적인 역할을 합니다.

     

    Architectural Tactic의 예와 적용

    성능 개선을 위한 Tactic

    • 로드 밸런싱: 사용자 요청을 여러 서버에 분산시켜 처리 속도를 향상시킵니다.
    • 캐싱: 자주 요청되는 데이터를 캐시에 저장하여 빠르게 응답할 수 있습니다.

     

    가용성 향상을 위한 Tactic

    • Ping/Echo: 정기적으로 시스템 컴포넌트를 체크하여 가용성을 모니터링합니다.
    • 레플리케이션: 데이터와 서비스의 복제본을 유지하여 장애 발생 시 즉각적인 대응이 가능합니다.

     

    확장성 보장을 위한 Tactic

    • 마이크로서비스 아키텍처: 각 기능을 독립적인 서비스로 분리하여 필요에 따라 개별적으로 확장할 수 있습니다.

     

    보안 강화를 위한 Tactic

    • 인증 및 권한 부여: 사용자의 신원을 확인하고 적절한 권한을 부여하여 시스템 접근을 제어합니다.
    • 암호화: 데이터를 암호화하여 저장 및 전송 시 보안을 강화합니다.

     

    Architectural Tactic의 성공적인 적용은 품질 속성을 개선하고, 소프트웨어 개발 프로젝트의 성공 가능성을 높이며, 사용자의 만족도를 증대시키는 핵심 요소입니다. 따라서, Architectural Tactic은 아키텍트와 개발자에게 필수적인 도구이며, 그 선택과 구현은 신중하게 이루어져야 합니다.

     

    Architectural Tactics 종류

    Availability Tactics (가용성)

    시스템이 중단 없이 지속적으로 운영될 수 있도록 보장하며, 장애 발생 시 빠르게 회복할 수 있도록 하는 것입니다.

    Availability Tactics
    Availability Tactics

     

    Interoperability Tactics (상호운용성)

    다른 시스템이나 컴포넌트와 원활하게 정보를 교환하고 기능을 공유할 수 있도록 하는 것입니다.

    Interoperability Tactics
    Interoperability Tactics

     

    Modifiability Tactics (변경 가능성)

    시스템이 새로운 요구사항이나 변경사항에 대응하여 손쉽게 수정, 확장 또는 조정될 수 있도록 하는 것입니다.

    Modifiability Tactics
    Modifiability Tactics

     

    Performance Tactics (성능)

    시스템이 효율적으로 자원을 사용하여 높은 처리량을 달성하고, 사용자 요청에 대해 빠른 응답 시간을 제공하는 것입니다.

    Performance Tactics
    Performance Tactics

     

    Security Tactics (보안)

    시스템을 외부 공격으로부터 보호하고, 데이터의 기밀성, 무결성, 사용 가능성을 보장하는 것입니다.

    Security Tactics
    Security Tactics

     

    Testability Tactics (테스트 가능성)

    시스템의 부품이나 전체가 효과적으로 테스트될 수 있도록 설계하는 것입니다. 이를 통해 결함을 조기에 발견하고 수정할 수 있습니다.

    Testability Tactics
    Testability Tactics

     

    Usability Tactics (사용성)

    사용자가 시스템을 쉽게 이해하고 사용할 수 있도록 하며, 사용자 경험을 개선하는 것입니다.

    Usability Tactics
    Usability Tactics

     

    Architectural Style과 Architectural Tactics의 차이점

    Architectural Style은 소프트웨어 시스템의 구조를 정의하는 근본적인 패턴이나 틀을 말합니다. 이는 컴포넌트, 커넥터 및 그들의 배치 방식을 포함하여 시스템의 전체적인 구조를 지침으로 제시합니다. 예를 들어, 마이크로서비스, 클라이언트-서버, 이벤트 기반 등이 아키텍처 스타일에 해당합니다. 아키텍처 스타일의 목적은 시스템의 고수준 구조를 제시하여 개발자가 일관된 방식으로 설계할 수 있도록 하는 것입니다.

     

    Architectural Tactics는 특정 품질 속성(예: 성능, 가용성, 확장성, 보안)을 달성하거나 개선하기 위해 취할 수 있는 구체적인 전략이나 조치입니다. 태크틱은 시스템의 세부 설계 단계에서 품질 목표를 충족시키기 위해 적용됩니다. 예를 들어, 로드 밸런싱, 캐싱, 인증 및 권한 부여 등이 있습니다. Architectural Tactic의 주된 목적은 시스템의 품질 요구사항을 충족시키는 것입니다.

     

    상호작용과 통합

    Architectural Style과 Architectural  Tactics는 소프트웨어 아키텍처 설계 과정에서 서로 상호 보완적으로 작용합니다. Architectural Style 은 시스템의 전반적인 구조를 결정하는 반면, Architectural  Tactics는 그 구조 내에서 특정 품질 목표를 달성하기 위한 구체적인 방법을 제공합니다.

    예를 들어, 마이크로서비스 아키텍처 스타일을 선택했다고 가정해 봅시다. 이 스타일은 서비스가 느슨하게 결합되어 있어 각 서비스를 독립적으로 배포하고 확장할 수 있게 합니다. 이러한 구조적 특성을 바탕으로, 로드 밸런싱이나 서비스 디스커버리와 같은 Architectural  Tactic을 적용하여 시스템의 가용성과 확장성을 추가로 개선할 수 있습니다.

     

    Architectural Style은 전반적인 설계 방향을 제시하고, Architectural  Tactic 은 특정 품질 속성을 목표로 하는 세부 전략을 제공합니다.

     

    성공적인 통합 전략

    Architectural Style과 Architectural  Tactics를 성공적으로 통합하기 위해서는 다음 전략을 고려해야 합니다.

    • 시스템의 요구사항 파악: 프로젝트 시작 단계에서 시스템의 품질 요구사항과 비즈니스 목표를 명확히 이해해야 합니다.
    • 적합한 스타일 선택: 시스템의 요구사항을 충족시키고 프로젝트 목표에 부합하는 Architectural Style을 선택합니다.
    • 품질 속성별 태크틱 적용: 선택된 스타일 내에서 각 품질 속성을 개선하거나 보장할 수 있는 Architectural  Tactic을 신중하게 선택하고 적용합니다.
    • 평가 및 조정: 설계 과정에서 정기적으로 시스템을 평가하고, 필요한 경우 Architectural Style이나 Architectural  Tactic을 조정하여 최적의 성능과 품질을 달성합니다.

     

    Architectural Style과 Architectural  Tactic을 조화롭게 통합함으로써, 개발자는 품질이 우수하고, 유지보수가 쉽고, 확장 가능한 소프트웨어 시스템을 설계할 수 있습니다. 이러한 접근 방식은 소프트웨어 아키텍처의 복잡성을 관리하고, 프로젝트의 성공 가능성을 높이는 데 기여합니다.