본문 바로가기
Homo Architect/Things Every SW Architect Should Know

애플리케이션 아키텍처는 애플리케이션 성능을 결정한다.

by javauser 2009. 3. 18.
  - Randy Stafford

Randy Stafford는 개발자, 분석가, 아키텍트 관리자, 컨설턴트 및 저자/프레젠터로 20년의 경험을 가진 현재 활동중인 소프트웨어 전문가이다.

현재 오라클의 미들웨어 개발 A팀에 있으며, 개념 증명 프로젝트, 아키텍처 리뷰, 다양한 고객 조직으로 인한 제품 위기 등에 대해 국제적으로 일을 하며, grid, SOA, 성능, HA, JEE/ORM 작업에 전문성을 가지고 있다.






애플리케이션 아키텍처는 애플리케이션 성능을 결정합니다. 이는 당연한 사실처럼 보이지만, 실제 상황은 그렇지 않다는 것을 보여주고 있습니다. 예를 들어, 소프트웨어 아키텍트들은 종종 소프트웨어 기반구조를 한 제품에서 다른 제품으로 변경하는 것으로 애플리케이션 성능 문제를 해결하는데 충분하다고 믿고 있습니다. 그러한 믿음은 다른 경쟁사보다 25% 성능 향상이 있다고 말하는 업체의 벤치마크 선전 때문일 수도 있습니다. 하지만 해당 업체의 제품이 3 밀리초에 수행하는 반면 경쟁사의 제품은 4 밀리초 걸린다면, 25% 즉, 1 밀리초 차이는 애플리케이션 성능 특성상 극히 비효율적인 아키텍처의 영역에서 거의 영향이 없습니다.

IT 관리자와 업체 벤치마킹 팀 이외 업체 지원 부서와 애플리케이션 성능 관리 부문과 같은 다른 그룹의 사람들은 메모리 할당, 연결 풀 크기, 쓰레드 풀 크기 등과 같은 사소한 것들을 건드림으로써 소프트웨어 기반 구조에 대한 간단한 “튜닝”을 언급합니다. 하지만 만일 애플리케이션에 대한 배치가 예상되는 부하에 적합하도록 충분하지 않게 설계되었거나 혹은 애플리케이션의 기본적인 아키텍처가 자원을 사용하는데 있어서 너무 비효율적이라면 아무리 많은 “튜닝”을 하더라도 원하는 성능과 확장성에 대한 품질 요소를 만족할 수가 없습니다. 대신에 내부 로직에 대한 재아키텍처링이나 배포 전략에 대한 재아키텍처링, 혹은 모두를 요할 수 있습니다.

결국, 모든 업체 제품과 애플리케이션 아키텍처는 분산 컴퓨팅과 내부의 물리적인 내용에 대한 동일한 근본 원리에 의해서 제약을 받습니다. 즉, 애플리케이션과 제품은 한정된 용량을 가지는 컴퓨터 상의 프로세스로 실행되고, 프로토콜 스택을 사용해서 서로 통신하며, 어느 정도 지연을 가지고 연결됩니다. 따라서 애플리케이션 아키텍처는 애플리케이션 성능과 확장성에 대해 주요한 결정사항이 된다고 인식할 필요가 있습니다. 그러한 품질 속성들은 소프트웨어의 브랜드나 기반 구조의 “튜닝”이라는 어떤 묘책으로 기적적으로 향상시킬 수는 없습니다. 오히려 그러한 영역의 향상은 신중하게 고려한 (재)아키텍팅이라는 어려운 작업을 요합니다.


원문 : 모든 아키텍트가 알아야 하는 97가지 사실 - Application architecture determines application performance

반응형