본문 바로가기
IT

소프트웨어 아키텍처(SA) 직무 정의, 하는 일, 필요 역량 알아보기

by 파이프라인만들기 2022. 11. 24.

IT에서의 아키텍처란 구성요소 간의 관계와 특성을 결정하는 구조를 의미합니다. 구성요소가 무엇이냐에 따라서 다양한 종류의 아키텍처가 있습니다. 데이터 구성요소에 대한 것을 다루는 데이터 아키텍처, 소프트웨어 구성요소에 대한 것을 다루는 소프트웨어 아키텍처, 인프라 구성요소에 대한 것을 다루는 인프라 아키텍처, 시스템 전반적인 것을 다루는 테크니컬 아키텍처 등입니다.(더 많은 아키텍처가 존재합니다.)

 

이번 글에서는 소프트웨어 구성요소에 대한 것을 다루는 소프트웨어 아키텍처 직무에 대해서 알아보겠습니다. 구체적으로는 소프트웨어 아키텍처의 정의, 하는 일 그리고 소프트웨어 아키텍처 직무를 수행하기 위한 역량과 기술 등에 대해서 살펴보겠습니다.

 

소프트웨어 아키텍처 직무 정의

소프트웨어 아키텍처 직무는 고객 비즈니스 업무에 맞는 최적의 IT 소프트웨어 아키텍처 전략을 수립하고, 소프트웨어의 특성에 맞게 각 구성 요소 간 관계를 설계해 애플리케이션 또는 솔루션을 구축할 수 있도록 하는 업무입니다. 소프트웨어 아키텍처 업무를 제대로 수행하면 소프트웨어 구성요소가 식별되고, 소프트웨어 개발전략이 수립되고, 아키텍처가 검증되며, 시스템 품질이 보증됩니다. 단계별로 자세하게 살펴보면 다음과 같습니다.

 

우선 고객 요구사항을 기반으로 솔루션 개발, 애플리케이션 개발, 시스템 구축 등에 필요한 소프트웨어 구성 요소를 식별합니다. 그리고 해당 구성 요소 간 상호관계와 기술구조를 정의해 최적화된 SW 개발 전략을 수립합니다. 다음으로 솔루션/애플리케이션 개발 또는 시스템 구축을 위해 식별된 구성요소별 실행 아키텍처를 검증합니다. 최종적으로 개발과 구축을 리딩 하면서 아키텍처 최적화를 통해 시스템 품질을 확보합니다.

 

소프트웨어 아키텍트(SA)가 하는 일

소프트웨어 아키텍처 직무를 수행하는 사람들을 소프트웨어 아키텍트(SA)라고 합니다. SA는 AS-IS(현행) 아키텍처 분석, 아키텍처 요구사항 분석, TO-BE 아키텍처 설계, TO-BE 아키텍처 검증, 개발 전략 수립,아키텍처 구축, 아키텍처 테스트, 아키텍처 변경관리, 아키텍처 진단 및 최적화 등의 일을 합니다. 상세한 내용을 살펴보면 아래와 같습니다.

 

  • AS-IS(현행) 아키텍처 분석
    : 아키텍처 관점에서 AS-IS(현행) 아키텍처의 취약점을 도출하고, TO-BE 아키텍처 설계에 개선안을 반영한다.
  • 아키텍처 요구사항 분석
    : 고객의 기능/비기능 요구사항을 분석해서 이를 충족시킬 수 있는 부분별 아키텍처를 제안한다.
  • TO-BE 아키텍처 설계
    : 아키텍처 설계 방향을 수립하고, 요구사항을 충족과 현행 아키텍처 취약점을 보완한 아키텍처 구조를 설계한다.
  • TO-BE 아키텍처 검증
    : 설계에서 정의된 구조와 요소 기술이 실행 가능한지 아키텍처를 검증한다.
  • 개발 전략 수립
    : 개발 경험을 바탕으로 구축 대상의 특성과 개발 공정을 반영한 최적의 개발 전략을 세운다.
  • 개발 표준 정의
    : 아키텍처링에서 정의된 요소기술과, 구성요소, 설계 결과물 등을 기반으로 서비스/솔루션 구현을 위한 개발 표준을 정의한다. 정의된 개발 표준으로 개발을 리딩 한다.
  • 아키텍처 구축
    : 설계에서 정의된 구조, 기술, 개발 표준에 따라 구조와 기능 구축한다.
  • 아키텍처 테스트
    : 구축된 아키텍처가 고객의 기능 및 비기능 요구사항을 충족하는지 검증하는 테스트 한다.
  • 아키텍처 변경관리
    : 아키텍처 변경사항을 정리하고, 검토 및 검증한다.
  • 아키텍처 진단 및 최적화 
    : 사전에 준비된 진단 항목에 바탕으로 아키텍처 진단하고, 최적화 대안을 제시한다.

 

소프트웨어 아키텍처 직무를 수행하기 위해 필요한 역량과 기술

소프트웨어 아키텍처 직무를 수행하는 소프트웨어 아키텍트(SA)에게 필요한 역량과 기술이 있습니다. 소프트웨어 관련 구성요소를 다룬다고, 소프트웨어에 관련된 지식만 있어서는 안 됩니다. 데이터, 하드웨어, 시스템, 네트워크 지식도 있어야 하고, 실제로 서비스와 애플리케이션을 개발하고, 활용한 경험이 있어야 합니다. 또한 표준과 가이드를 정의하고, 설계를 할 수 있는 능력이 있어야 합니다.

 

소프트웨어 아키텍처 직무 수행을 위한 필수 역량과 기술에 대해서 알아보면 다음과 같습니다.

 

  • 공통 서비스, 애플리케이션 개발 경험
    : 실제로 서비스나 애플리케이션을 개발해본 경험이 있어야 합니다. 그래야 설계한 아키텍처를 검증하기 위한 개발을 할 수 있습니다.
  • 핵심 메커니즘 설계 및 개발 경험
    : 서비스/솔루션/시스템 구축에 필요한 소프트웨어 구성 요소별 핵심 메커니즘을 설계하고 구축할 수 있어야 합니다. 이는 공통 서비스, 애플리케이션 개발 경험과 다르게 요구되는 또 다른 경험입니다.
  • 데이터에 대한 이해
    : 실제 소프트웨어 구성 요소 간 주고받는 데이터에 대해서 알고, 데이터 표준화에 대한 이해가 있어야 합니다. 그리고 이를 바탕으로 데이터 표준을 정의할 수 있어야 합니다.
  • 기본적인 데이터 모델링
    : 데이터 주제 영역, 엔티티, 속성 등을 도출할 때 타당성을 설명할 수 있어야 합니다. 정형, 비정형, 반정형 데이터에 대한 이해를 바탕으로 기본적인 데이터 모델링을 할 수 있어야 합니다.
  • 아키텍처 정의
    : 고객 요건을 기반으로 소프트웨어 구성요소를 식별할 수 있어야 합니다. 또한 아키텍처 이슈 및 의사결정 요소를 정의할 수 있어야 합니다.
  • 아키텍처 활용
    : 설계된 아키텍처를 기반으로 소프트웨어 개발 전략과 표준 가이드를 작성할 수 있어야 합니다.
  • 데이터 아키텍처 활용
    : 소프트웨어 아키텍처 설계를 할 때 필요한 데이터 아키텍처를 활용할 수 있어야 합니다.
  • 오픈소스 활용
    : 오픈소스를 활용해 아키텍처를 설계하고, 오픈소스 기반 개발을 리딩 할 수 있어야 합니다.
  • 공통 기술 기반 활용
  • 개발 표준 및 환경 구현
    : 오픈소스, 재사용 자산, 사용 소프트웨어를 활용해 서비스/솔루션에 최적화된 개발 표준을 정의할 수 있어야 합니다. 또한 개발 환경을 구성해 개발을 리딩 할 수 있어야 합니다.
  • 애플리케이션 최적화
    : 애플리케이션 진단을 통해 문제점을 분석하고, 시스템을 최적화할 수 있어야 합니다.
  • 아키텍처 적합성 평가
    :  아키텍처가 품질 속성에 미치는 영향을 파악하고, 아키텍처의 적합성을 평가할 수 있어야 합니다.
  • 아키텍처 문서화
    : 이해당사자들 간의 커뮤니케이션을 위해 시스템 구성도와 아키텍처 정의서 문서 등을 작성할 수 있어야 합니다.
  • 아키텍처 진단 및 전략 수립
    : AS-IS 현행 시스템 분석과 고객 인터뷰를 통해 문제점과 개선점을 도출할 수 있어야 합니다. 그리고 개선점을 반영한 아키텍처 대안을 제시하고, 전략을 수립할 수 있어야 합니다.
  • 시스템 테스트
    : 설계 및 구현한 아키텍처를 테스트하고, 검증할 수 있어야 합니다.
  • 시스템 이슈 분석
    : 시스템에 대한 이슈 발생 시 이를 분석하고, 문제를 해결할 수 있어야 합니다.

댓글