블로그

애플리케이션 요구 사항의 계층 구조

로리 맥비티 썸네일
로리 맥비티
2016년 5월 2일 게시

대부분의 사람들은 매슬로의 욕구단계설을 들어보거나 본 적이 있습니다. 이 개념에 익숙하지 않거나 다시 한번 살펴보고 싶다면, 간단히 요약하자면, 마슬로는 사람들이 특정한 욕구를 달성하려고 동기를 부여받는다고 믿었습니다. 그는 음식, 수면, 안전과 같은 기본적인 생존 관련 욕구에서 시작하여 자아실현과 같은 보다 개인적이고 성장 관련 욕구로 올라가는 5단계의 계층을 정의했습니다.

말할 것도 없이 계층 구조는 기술을 포함한 다양한 문제에 대한 일련의 요구 사항을 설명하는 모델로 자주 사용됩니다. 그래서 우리는 오늘 여기까지 왔습니다.

오늘날 애플리케이션에는 Maslow의 계층 구조를 모방하여 계층적으로 배열할 수 있는 매우 구체적인 요구 사항 집합이 있습니다. 매슬로의 계층 구조와 마찬가지로 하위 수준의 욕구는 생존과 성공에 가장 중요한 반면, 상위 수준의 욕구는 성장을 가능하게 합니다. 참 간단하죠?

이것이 중요한 이유는 오늘날의 환경과 사용자 기대, 그리고 어떤 경우에는 순전히 기술적인 이유로 인해 이러한 요구 사항 중 일부는 앱 서비스 없이는 현실적으로 충족될 수 없기 때문입니다. 여기에는 로드 밸런싱, 장애 조치, 웹 앱 보안, SSO, 가속 및 최적화 등이 포함됩니다.

영상

물론 충돌이나 장애가 발생할 경우 스스로 다시 시작하는 앱을 작성할 수는 있지만, 중단을 유발하는 네트워크 수준의 장애는 해결할 수 없습니다. 부하 분산이나 장애 조치 서비스와 같은 업스트림(외부) 시스템만이 이를 수행할 수 있습니다. 즉, 로드 밸런싱과 같은 앱 서비스를 사용하지 않는 한 애플리케이션의 안정성을 보장할 수 없습니다. 마찬가지로 대부분의 애플리케이션은 TCP 동작을 제어하는 네트워크 스택을 손상시킬 수 없습니다. 하지만 업스트림 프록시(로드 밸런싱 서비스)는 가능하며, 모바일 앱을 사용하기 편리하게 만드는 많은 최적화가 여기에서 구현됩니다. 이러한 기능이 없으면 앱은 느리고 반응성이 떨어지며 최적화된 앱보다 더 높은 비율로 중단되는 경향이 있습니다. 그렇기 때문에 성능은 중간 계층 요구 사항입니다. 성능은 중요하지만 애플리케이션에 가장 중요한 요구 사항은 아니기 때문입니다. 결국 사용할 수 없다면 아무리 최적화해도 도움이 되지 않습니다.

그럼 더 이상 미루지 말고 앱 요구 사항의 계층 구조에 대해 자세히 살펴보겠습니다.

1. 신뢰할 수 있음

신뢰성이란 사용자(기업 및 소비자)가 앱이 항상 사용 가능하다는 것을 의미합니다. 즉, 높은 수요(확장성), 장애(장애 조치), 재해(재해 복구) 발생 시에도 앱이 계속 사용 가능하도록 해야 한다는 의미입니다. 가장 기본적인 의미는 부하 분산 및 장애 조치 서비스를 의미하지만, 재해 발생 시 사용자를 리디렉션하는 DNS와 같은 지원 앱 서비스도 포함됩니다. 애플리케이션 제공 현황 설문 조사에서 "앱 서비스 조직이 애플리케이션을 배포할 때 반드시 고려해야 할 사항" 중 가용성이 상위를 차지한 것은 놀라운 일이 아닙니다. 이는 단순히 앱의 기본 생존에 필요한 것이 아니라, 오늘날에는 기업의 생존에도 필요한 것입니다.

2. 보안

아, 보안이군요. 이것이 없으면 앱은 코드의 품질과 관련된 공격뿐만 아니라 다양한 공격에 취약해집니다. 애플리케이션 보안은 앱 자체뿐만 아니라 기반 플랫폼도 포함하는 스택입니다. 그리고 보고에 따르면 공격자들은 계속해서 애플리케이션 계층으로 접근하여 데이터를 훔치고 사업을 중단시키기 위해 악용하는 등의 수법을 사용하고 있습니다. 즉, DDoS 보호, 웹 앱 보안, 사기 방지, 암호화 서비스 등 다양한 보안 앱 서비스가 필요하여 애플리케이션의 가용성과 안정성을 유지하는 데 도움이 됩니다. 조직이 공격을 받고 새로운 취약점이 보고되는 빈도가 증가함에 따라 오늘날 앱과 기업의 생존을 보장하는 데 필요한 핵심 앱 서비스 중 하나로 보안에 대한 요구가 커지고 있습니다.

3. 성능

성능. 우리 모두는 이것이 얼마나 중요한지 알고 있습니다. 특히 모바일 기기(모바일 네트워크)에서 일반적으로 사용되는 앱의 경우 더욱 그렇습니다. 성과 앱 서비스는 기본적인 요구 사항을 해결하는 앱 서비스에서 성장을 해결하는 앱 서비스로 넘어가는 계층 수준입니다. 성과와 관련된 우려는 실제로 두 가지 모두에 관한 것입니다. 앱이 너무 느리거나 반응성이 없으면 기업 사용자의 생산성에 부정적인 영향을 미칠 수 있을 뿐만 아니라 소비자 수익도 감소할 수 있습니다. 앱을 사용할 수 없거나 보안에 문제가 발생하는 것만큼 비즈니스에 큰 영향을 미치지는 않지만 여전히 중요합니다. 그렇기 때문에 많은 조직에서 이미지 최적화, 압축, SSL 오프로딩, TCP 멀티플렉싱과 같은 기술을 도입하여 애플리케이션 성능을 개선하는 것을 볼 수 있습니다. 때로는 코드가 중요한 것이 아니라 네트워크, 사용자 기기, 애플리케이션이 통신하는 프로토콜에서 발생하는 문제를 해결하는 것이 중요하기 때문입니다.

4. 프로그래밍 가능성

앱은 오늘날의 비즈니스이며, 앱은 빠르게 제공되어야 할 뿐만 아니라 빠르게 배포되어야 합니다. 성장하고 확장하려면 하위 수준의 요구 사항(안정성, 보안, 성능)을 지원하는 앱 서비스도 빠르게 배포할 수 있어야 합니다. 즉, 프로그래밍이 가능하다는 뜻입니다. 이는 API와 템플릿을 의미하며, 다른 API 경제와 통합되고 접근이 가능해 CI/CD 파이프라인을 개발에서 운영으로, 그리고 더 광범위한 IT 스펙트럼으로 확장한다는 의미입니다. 프로그래밍 기능을 통해 앱 서비스는 네트워크(SDN), 클라우드( OpenStack ) 또는 전체 데이터 센터(SDDC)에 초점을 맞춰 DevOps 생태계에 참여할 수 있습니다. 템플릿은 현대적 데이터 센터에서 배포를 추진하는 프로세스를 개선하는 데 필요한 표준화(일관성)와 반복성을 제공합니다. API는 구성 및 관리를 자동화하는 데 사용되는 다양한 프레임워크와 툴셋에 대한 유연성과 지원을 보장하며, 네트워크가 방해가 되어 앱이 소외되지 않도록 보장합니다.

5. 건축적 민첩성

마지막으로, 오늘날 앱(및 비즈니스) 성장을 지원하려면 애플리케이션에 아키텍처적 민첩성이 필요합니다. 즉, 이를 지원하고 활성화하고 보호하는 앱 서비스는 앱에서 사용하는 아키텍처(예: 마이크로서비스, 컨테이너, 가상화, 클라우드)와 호환되어야 합니다. 계층 구조의 하위 수준 요구 사항을 지원하는 앱 서비스는 애플리케이션과 함께 어디에 배치되든 배포가 가능해야 합니다. 즉, 가상, 물리적, 클라우드 기반 앱 서비스에 대한 지원을 의미합니다.