본문 바로가기

Homo Architect55

소프트웨어 아키텍트가 사라진다(?) 소프트웨어 아키텍트는 복잡한 시스템의 설계와 구현을 지휘하는 핵심 인물로, 프로젝트의 기술적 비전을 설정하고 구현 팀이 이를 따를 수 있도록 가이드한다. 이들은 고수준의 의사결정을 내리며, 시스템의 성능, 안정성, 확장성을 보장하는 데 핵심적인 역할을 한다. 전통적으로, 소프트웨어 아키텍트는 프로젝트의 성공에 있어 불가결한 요소로 여겨져 왔다. 그러나, 최근 기술의 급속한 발전과 산업의 변화는 이 역할을 근본적으로 변화시키고 있다. 클라우드 서비스의 보편화, 데브옵스 문화의 확산, 그리고 민첩한 개발 방법론의 채택은 소프트웨어 개발 과정을 더욱 민첩하고 통합적으로 만들었다. 이러한 변화는 아키텍트의 전통적인 역할이 사라지거나, 적어도 이전과는 매우 다른 형태로 변모하고 있음을 시사한다. 이 글에서는 소프.. 2024. 3. 1.
얼마나 많은 이해관계자들을 만족시켜야 하는가? 시스템을 만들때에 사용자(user)의 요구를 충족시키는 것이 제일 목적이라고 말한다. 보통 사용자라고 함은 시스템이 제공하는 서비스를 직접 사용해서 원하는 것(가치)을 얻는 행위를 하는 액터를 일컫는다. 이러한 사용자는 불특정 다수가 될 수도 있겠지만, 업무 시스템과 같이 특정 업무를 위한 시스템의 경우에는 명확한 업무 사용자가 정의된다. 어떠한 사용자이든 이들은 시스템을 직접 다루거나 처리하는 형태가 아닌 그저 수동적으로 시스템이 일방적으로 제공하는 서비스를 사용할 뿐이다. 하지만, 최근의 시스템들은 사용자들에게 어느정도는 능동적인 행위를 부여하는 형태로 서비스를 제공하기 시작한다. 예전에는 HTML을 그저 브라우저를 통해 화면에 보여지는 요소를 만드는 형태로만 쳐다보았다면, 지금의 사용자들은 직접 자.. 2012. 9. 22.
컴포넌트 식별/구성과 빌드 프로세스, 그리고 의존관계 SW 아키텍처에서 최소한의 빌드 단위를 결정하는 것은 이제 중요한 이슈이다. 현재의 SW 아키텍처에서 빌드 단위는 하나의 애플리케이션 (자바의 경우 war) 단위 안에 물리적으로 모든 소스 코드를 위치하는 형태로는 잦은 비즈니스의 변화와 이에 따르는 응대를 하기란 쉽지 않기 때문에 재사용 가능한 단위의 컴포넌트를 최대한 많이 그리고, 최대한 확장 가능한 형태로 구성해야 한다. 이러한 컴포넌트를 식별하고 구성하는 행위들은 궁극적으로 빌드 단위에 영향을 미치게 되며, 이는 빌드 프로세스에 직접적으로 영향을 미친다. 컴포넌트는 재사용 단위를 높이고 의존관계를 최대한 느슨한 형태로 구성하게 되지만, 이는 그 말 자체가 균형을 이루기 힘든 상태임을 알 수 있다. 재사용 단위를 높이는 것은 궁극적으로 컴포넌트의 의.. 2012. 3. 5.
너무 많은 이해관계자들을 위한, 너무 많은 시스템을 위한 아키텍처 여기에 아주 근사한 아키텍처를 기반으로 만든 시스템이 있다. 이 아키텍처는 SoC(Separation of Concerns)의 원칙에 따라서 내부 시스템 간에 느슨한 결합(loosely coupled)을 통해 서로 연결되고, 각 계층(layer)은 의존관계(dependency)의 원칙하에 내부 모듈은 호출하게 되어 있다. 다소 어쩔 수 없는 솔루션이나 외부 시스템 때문에 일부 아키텍처가 균형을 이루지 못한 부분도 있지만, 극히 일부분이고, 그리 많이 사용하지 않은 기능이라 이 부분 역시 중요한 모듈과는 최대한 의존관계를 줄이도록 설계를 했다. 기능적으로도 품질적으로도 사용자가 만족할 만한 수준의 아키텍처가 만들어졌으며, 충분히 문서화 작업도 이루어져 있다. 이제 이 시스템이 운영 단계에 접어들면서 운영에.. 2012. 2. 28.
반응형