로얄젤리

웹 아키텍쳐 구조 설계 가이드

IT 트렌드

Web Application Architecture Pocket Guide의 목적은 Microsoft 플랫폼에서 웹 애플리케이션을 작성할 때 사용자의 효과를 향상하는 것이다. 주요 청중은 솔루션 설계자와 개발 선도자다. 이 지침은 에 구축된 웹 애플리케이션의 아키텍처와 설계를 위한 설계 수준의 지침을 제공한다. NET 플랫폼. 그것은 애플리케이션 기능성을 계층, 구성요소 및 서비스로 나누는 것에 초점을 맞추고 있으며, 이들의 주요 설계 특성을 살펴본다. 이 지침은 과제 기반이며 주요 아키텍처 및 설계 초점에 해당하는 장에 제시되어 있다. 참조 자원으로 사용하도록 설계되어 있거나 처음부터 끝까지 읽을 수 있다. 이 지침에는 다음과 같은 장과 자원이 수록되어 있다: • 제1장 "웹 애플리케이션 아키텍처"는 웹 애플리케이션에 대한 일반적인 설계 지침을 제공하고, 핵심 속성을 설명하고, 계층의 사용을 논의하며, 성능, 보안 및 배치에 대한 지침을 제공하며, 주요 패턴과 기술 고려사항을 나열한다. • 제2장 "건축 및 설계 지침"은 소프트웨어 아키텍처의 개념을 이해하고, 소프트웨어 아키텍처의 핵심 설계 원칙을 학습하며, 소프트웨어 아키텍처의 핵심 속성에 대한 지침을 제공하는 데 도움이 된다. • 제3장 "프레젠테이션 계층 지침"은 프레젠테이션 계층이 일반적인 애플리케이션 아키텍처에 어떻게 부합하는지 이해하고, 프레젠테이션 계층의 구성요소에 대해 배우고, 이러한 구성요소를 설계하는 방법을 배우고, 프레젠테이션 계층을 설계할 때 직면하는 일반적인 문제를 이해하는 데 도움이 된다. 또한 계층을 설계하기 위한 주요 지침을 포함하고 있으며, 주요 패턴과 기술 고려사항을 나열한다. • 제4장 "비즈니스 계층 지침"은 비즈니스 계층이 일반적인 애플리케이션 아키텍처에 어떻게 부합하는지 이해하고, 비즈니스 계층의 구성요소에 대해 배우고, 이러한 구성요소를 설계하는 방법을 배우고, 비즈니스 계층을 설계할 때 직면하는 일반적인 문제를 이해하는 데 도움이 된다. 또한 계층을 설계하기 위한 핵심 지침을 포함하고 있으며, 주요 패턴과 기술 고려 사항을 나열한다. • 제5장 "데이터 접근 계층 지침"은 데이터 계층이 일반적인 애플리케이션 아키텍처에 어떻게 부합하는지, 데이터 계층의 구성요소에 대해 배우고, 이러한 구성요소를 설계하는 방법을 배우고, 데이터 계층을 설계할 때 직면하는 일반적인 문제를 이해하는 데 도움을 준다. 또한 계층을 설계하기 위한 핵심 지침을 포함하고 있으며, 주요 패턴과 기술 고려사항을 나열한다. • 제6장 "서비스 계층 지침"은 서비스 계층이 일반적인 애플리케이션 아키텍처에 어떻게 부합하는지 이해하고, 서비스 계층의 구성요소에 대해 배우고, 이러한 구성요소를 설계하는 방법을 배우고, 서비스 계층을 설계할 때 직면하는 일반적인 문제를 이해하는 데 도움이 된다. 또한 계층을 설계하기 위한 핵심 지침을 포함하고 있으며, 주요 패턴과 기술 고려사항을 나열한다. • 제7장 "소통 지침"은 당신이 통신 접근법 설계 지침을 배우고, 구성요소가 서로 통신하는 방법을 이해하는 것을 돕는다. 또한, 통신 접근법을 선택하는 데 있어 상호운용성, 성능 및 보안 고려사항과 이용 가능한 통신 기술 선택사항에 대해 알아보는 데 도움이 될 것이다. • 제8장 "배포 패턴"은 배치 선택에 영향을 미치는 주요 요소를 학습하는 데 도움이 되며 배치 패턴 선택에 대한 권장 사항을 포함하고 있다. 또한, 보안 및 기타 품질 속성에 대한 배포 전략의 영향을 이해하고 일반적인 배포 패턴을 학습하는 데 도움이 된다.

 

웹 응용 프로그램을 설계할 때, 소프트웨어 설계자의 목표는 안전하고 고성능 응용 프로그램을 설계하면서 작업을 다른 관심 영역으로 분리함으로써 복잡성을 최소화하는 것이다. 웹 응용 프로그램을 설계할 때는 다음 지침을 고려하십시오. • 응용 프로그램을 논리적으로 나누십시오 계층화를 사용하여 애플리케이션을 프레젠테이션, 비즈니스 및 데이터 접근 계층으로 논리적으로 나누십시오. 이를 통해 유지보수가 가능한 코드를 만들 수 있으며 각 계층의 성능을 개별적으로 감시하고 최적화할 수 있다. 또한 논리적 분리는 애플리케이션 확장을 위한 더 많은 선택권을 제공한다. • 추상화를 사용하여 계층 간 느슨한 결합을 구현한다. 이것은 요청을 계층 내의 구성요소가 이해하는 형식으로 변환하는 잘 알려진 입력과 출력이 있는 파사이드와 같은 인터페이스 구성요소를 정의함으로써 이루어질 수 있다. 또한 유형 또는 추상적 기본 클래스를 사용하여 인터페이스 구성 요소에 의해 구현되어야 하는 공유 추상화를 정의할 수도 있다. • 구성 요소가 서로 어떻게 통신하는지 이해 이를 위해서는 애플리케이션이 지원해야 하는 구축 시나리오를 이해해야 한다. 물리적 경계 또는 프로세스 경계를 통한 통신이 지원되어야 하는지 또는 모든 구성 요소가 같은 프로세스 내에서 실행되어야 하는지를 결정해야 한다. • 왕복 여행 감소 웹 애플리케이션을 설계할 때는 브라우저와 웹 서버 간, 웹 서버와 다운스트림 서버 간의 왕복 이동을 줄이기 위해 캐싱 및 출력 버퍼링과 같은 기술을 사용하는 것을 고려해 보십시오. • 캐싱 사용 고려 잘 설계된 캐싱 전략은 아마도 가장 중요한 성능 관련 설계 고려사항일 것이다. ASP·NET 캐싱 기능으로는 출력 캐싱, 부분 페이지 캐싱, 캐시 API 등이 있다. 이러한 기능을 활용할 수 있도록 애플리케이션을 설계하십시오. • 로딩 및 계측기 사용을 고려한다. 애플리케이션의 계층과 계층에 걸친 활동을 감사하고 기록해야 한다. 이러한 로그는 시스템에 대한 공격의 초기 징후를 제공하는 의심스러운 활동을 탐지하는 데 사용될 수 있다. • 장시간 실행되는 작업 중에는 차단을 피하십시오. 오랫동안 실행 중이거나 차단 작업을 하는 경우 웹 서버가 다른 들어오는 요청을 처리할 수 있도록 비동기식 접근 방식을 사용하는 것을 고려해 보십시오. • 신뢰 경계에서 사용자를 인증하는 것을 고려한다. 예를 들어 프레젠테이션 계층에서 원격 비즈니스 계층에 접근할 때 신뢰 경계를 넘을 때마다 사용자를 인증하도록 응용 프로그램을 설계해야 한다. • 네트워크 전체에 걸쳐 중요한 데이터를 일반 텍스트로 전달하지 마십시오. 암호나 인증 쿠키와 같은 중요한 데이터를 네트워크를 통해 전달해야 할 때마다 데이터를 암호화 및 서명하거나 SSL을 사용하십시오. • 최소의 권한을 가진 계정을 사용하여 웹 응용 프로그램을 실행하도록 설계하십시오. 공격자가 프로세스를 관리하는 경우, 프로세스 ID는 가능한 손상을 제한하기 위해 파일 시스템 및 기타 시스템 자원에 대한 접근을 제한해야 한다.