확장 가능한 웹 애플리케이션을 구축하는 방법
확장 가능한 웹 애플리케이션은 보다 우아한 방식으로 더 많은 요청을 선형적으로 처리할 수 있기 때문에 그렇게 불립니다. 더 많은 하드웨어가 추가되면 웹 사이트는 한 번에 많은 요청을 처리할 수 있습니다. 웹사이트에 확장성이 있다고 말하는 것은 단순히 사용자가 증가하고 요청이 넘치면 웹사이트가 모든 사용자를 동등하게 잘 처리할 수 있음을 의미합니다.
성공적으로 확장된 인기 웹사이트의 예.
Facebook의 성장을 살펴보면 수년에 걸쳐 어떻게 성장했는지 주목하는 것이 놀랍습니다. 일반 Facebook 사용자가 아니더라도 소셜 미디어 채널이 기업과 비즈니스에 미치는 영향을 무시하기 어려울 것입니다. 통계에 따르면 2017년 3월 현재 19억 4천만 명 이상의 활성 Facebook 사용자가 있으며 매년 18% 이상의 증가를 기록하고 있습니다. 일일 모바일 활성 사용자 수는 11억 5천만 명에 달합니다.
Facebook은 PHP로 작성되었으며 거대한 애플리케이션 아키텍처 덕분에 백만 명의 사용자로 확장할 수 있는 능력에 큰 성공을 거두었습니다. 이 아키텍처는 병목 현상을 방지하여 모든 언어에서 확장 가능합니다. 곡선의 모양(비용과 사용량의 관련성)이 애플리케이션 아키텍처를 결정합니다. 응용 프로그램이 확장 가능하면 곡선이 더 대각선이 되지만 병목 현상이 발생하면 거의 수직으로 변합니다.
사용된 언어, 데이터베이스 또는 컴파일러도 비선형 곡선의 형태에 중요한 역할을 합니다. 기본 설계 결함(구현 세부 사항보다 더 많은 것)이 있는 경우 커브가 빠르게 증가하는 데 중요합니다. 끊임없이 진화하는 Facebook의 아키텍처는 업계 최고의 엔지니어들이 관리합니다. Facebook은 자체 버전의 최적화된 PHP를 보유하고 있으며 Apache Cassandra와 같은 완전히 새로운 소프트웨어를 개발했습니다.
이제 백만 달러짜리 질문이 옵니다. 확장 가능한 웹 애플리케이션을 어떻게 구축합니까?
다음은 웹 애플리케이션을 확장할 수 있는 몇 가지 간단한 옵션입니다.
1. 확장
백엔드 타이어의 하중이 감당할 수 없을 정도로 무거워지면 웹사이트가 작동할 수 없습니다. 실행 가능하지만 비용이 많이 드는 옵션은 엔터티별로 리소스를 확장하는 것입니다. 네트워크 속도, IOP, 스토리지 용량 및 메모리와 같은 다른 차원에서도 이를 확장합니다. 이것이 비싼 이유는 내장된 탄성을 제공하지 않기 때문에 부하가 낮을 때 비용이 많이 들 수 있습니다.
그러나 스케일 아웃 아키텍처에는 로드 밸런서(최종 사용자의 요청, 외부 네트워크와 국제 네트워크 간의 경계)가 필요하므로 특정 유형 및 스캐닝 그룹의 연결을 스트리밍할 수 있습니다(시스템 로드 추적을 위해 새 CPU 생성). 인스턴스 및 활성 인스턴스 인벤토리 추적).
2. 캐싱
확장의 필요성으로 인해 대규모 확장에 대한 수요와 배포가 발생했습니다. 캐싱은 성능을 향상시키고 리소스 소비를 줄일 수 있습니다. 리소스 사용량에는 CPU, S3 요금, 데이터 저장소 요금, 외부 API 사용량 및 데이터베이스가 포함됩니다. 캐싱을 적용할 수 있는 위치를 확인하려면 읽기-쓰기 비율을 포함하여 요청 분포 및 데이터 크기를 이해하는 데 도움이 되는 데이터 분석을 수행하십시오.
3. 할 파티션의 종류
확장의 목적은 물론 용량을 추가하는 것입니다. 이것은 수직 또는 수평의 두 가지 방법으로 수행할 수 있습니다. 수직 확장에서는 더 많은 리소스(예: 더 크거나 더 단단한 드라이브)를 단일 서버에 추가합니다. 더 나은 메모리와 더 빠른 CPU로 컴퓨팅 작업이 더 커집니다. 수직 확장에서는 단일 리소스를 가져와 처리 용량을 늘립니다. 수평 확장에서는 더 많은 노드를 추가할 수 있습니다. 수평 확장을 수행하는 가장 일반적인 방법은 서비스를 파티션 또는 샤드로 분할하는 것입니다. 이러한 샤드는 특정 기능(예: 다양한 종류의 사용자의 관심사 충족)에 맞게 할당됩니다. 샤드의 이점은 추가 용량의 저장소를 제공할 수 있다는 것입니다. 그러나 여기서 주의할 점은 나중에 추가하는 것이 정말 어려운 작업일 수 있기 때문에 초기 디자인에 수평적 확장을 제공해야 한다는 것입니다.
응용 프로그램을 확장할 때 기억해야 할 사항, 작업 중에 다음 사항에 유의하십시오.
1. 웹 사이트 가동 시간에 대한 타협 없음
웹사이트는 사용자가 한 번에 사용할 수 있어야 합니다. 전자상거래 매장을 운영하다가 요청이 급증할 때마다 서버가 다운되는 것을 상상해 보십시오. 따라서 웹 사이트 가동 시간은 매우 중요하며 시스템 장애 및 중단에 관계없이 항상 사용할 수 있도록 웹 애플리케이션을 확장하십시오.
2. 검색 옵션
사용자는 동일한 데이터를 보기 위해 돌아올 수 있으므로 제정신으로 액세스할 수 있어야 합니다. 물론 데이터를 업데이트하지 않는 한. 사용자가 원할 때 언제든지 웹 사이트 데이터에 액세스할 수 있다는 것을 알고 있으면 사용자로부터 신뢰를 얻을 수 있습니다.
3. 성능
애플리케이션 확장의 주요 목표는 우수한 성능을 보장하는 것입니다. 대기 시간이 짧은 즉각적인 검색을 통한 빠른 응답이 매우 중요합니다.
4. 관리 용이성
웹 사이트를 확장한 후에는 웹 사이트의 관리 용이성을 확인하여 운영, 유지 관리 및 업데이트가 쉬워지는 것이 매우 중요합니다.
결론
PHP는 확장성이 없다는 오해가 있습니다. 그렇다면 다른 대규모 사이트 PHP는 어떻게 실행됩니까? 확장성은 단순한 언어가 아니라 애플리케이션 아키텍처에 관한 것입니다. 확장 가능한 웹 애플리케이션을 개발하는 데 필요한 시간은 사용되는 애플리케이션 및 프레임워크의 복잡성에 따라 다릅니다. 확장 가능한 앱에는 프런트 엔드 와 백 엔드 라는 두 가지 프로그래밍 계층이 있습니다. 이름에서 알 수 있듯이 프런트 엔드는 사용자가 상호 작용하는 것이며 인터페이스는 Android에서 iOS에 이르기까지 무엇이든 될 수 있습니다. 백엔드는 전체 작업의 약 80%를 차지하지만 사용자는 자신의 웹 애플리케이션에서 이 부분을 인식하지 못합니다. 기능은 확장성에서 중요한 역할을 합니다. 사용자는 이미지를 로드하기를 원할 수 있으므로 언제든지 이미지를 검색해야 할 수 있으므로 스토리지 확장성을 고려해야 합니다. 더 나은 이미지 다운로드 및 요청을 위해서는 낮은 대기 시간이 매우 중요합니다.
다음은 이 주제에 관한 몇 가지 흥미로운 내용입니다.
웹 애플리케이션 확장의 7단계, 설계자를 위한 전략.
확장 가능한 웹 애플리케이션을 구축하는 방법은 무엇입니까?
Google 클라우드 플랫폼에서 확장 가능한 애플리케이션 구축
Flickr.com/ klarititemplateshop.com/ Blogtrepreneur
저자 소개: Deepak은 PHPBabu의 책임자이며 모회사인 YUHIRO Technologies Private Limited에서 사무실 관리자로 일하고 있습니다.