IT박스

확장 가능한 애플리케이션을 설계하는 방법은 무엇입니까?

itboxs 2020. 12. 2. 08:15
반응형

확장 가능한 애플리케이션을 설계하는 방법은 무엇입니까?


확장 가능한 애플리케이션을 어떻게 설계 / 아키텍트합니까? 응용 프로그램을 확장하는 방법을 이해하는 데 도움이되는 책이나 웹 사이트에 대한 제안이 있습니까?

감사


지난 1 년 동안 회사에서 진행중인 프로젝트에 대해이 질문에 대해 신속하게 답변해야했으며 다음 리소스가 매우 유용하다는 것을 알게되었습니다. Todd Hoff 's highscalability.com ; 확장 가능한 인터넷 아키텍처 , Theo Schlossnagle; 확장 가능한 웹 사이트 구축 , Cal Henderson. 특히 Highscalability.com은 많은 좋은 프레젠테이션, 튜토리얼, 서적 및 논문을 알려줄 것이며 시작하기에 좋은 곳입니다. 모든 조언은 실용적이며 Flickr, Twitter 및 Google과 같은 사이트에서의 경험을 기반으로합니다.

BTW, 확장 성은 성능이 아닙니다. 완벽하게 확장 가능한 시스템은 추가 사용자 또는 용량을 추가하기 위해 고정 된 한계 비용이있는 시스템입니다.


이것은 livejournal과 그들이 시간이 지남에 따라 응용 프로그램을 어떻게 확장했는지에 대한 좋은 읽기입니다.

danga.com/words/2004_mysqlcon/mysql-slides.pdf [PDF]

찾고있는 종류가 아닐 수도 있지만 확장에 대한 더 나은 "이것이 우리가 한 일이며 이유"개요 중 하나입니다.


  • 확장 성은 유지 보수성과 밀접한 관련이 있다고 생각하는 경향이 있습니다. 그리고 사람들은 응용 프로그램을 개발 하는 데 짧은 시간 만 소비 하고 나머지 시간은 유지 관리 하는 데 종종 간과되는 것 같습니다 .

  • 또한, 스케일링 (코드보다 더 민첩하다 - 당신이 더 많은 그것의 가지고 같은) 데이터와 함께 할 거의 확실하게 가지고, 그게 왜 스토리지 액세스 비용이 사이에 유지해야 O(1)하고 O(n).

  • 저에게 완벽하게 확장 가능한 애플리케이션은 한 환경에서 다른 (유사한) 환경으로 복사하고 몇 가지 값을 구성한 다음 실행하여 전체 애플리케이션의 실행 영역을 확장 할 수있는 애플리케이션입니다.


여기에 이미 몇 가지 훌륭한 답변이 게시되어 있습니다. 일부 책과 링크에서 몇 가지 일반적인 사고 패턴을 찾을 수 있습니다.

  • 가능한 한 적은 코드 작성

  • 가능한 한 많이 코드 재사용

  • 디자인을 과도하게 또는 과소 평가하지 마십시오.

  • 개별 또는 여러 시스템에서 실행할 수있는 모듈 형 영역으로 물건을 나눕니다. 무거운 처리는 별도의 시스템에 맡겨야합니다.


기술을 시작하기 전에 응용 프로그램 범위를 알아야합니다. 고객 / 비즈니스 단위는 성능 측면에서 무엇을 기대하며 실패의 중요한 영역은 무엇입니까? Scott Hanselman은이 주제에 대해 훌륭한 팟 캐스트가졌습니다 .

제공되는 몇 가지 유용한 정보 : 꼭 필요한 경우가 아니면 캐싱을 사용하지 마십시오. 파일을 제공하는 것이 데이터베이스에서 조각을 조립하는 것보다 빠릅니다. peek 서버 시간을 처리하는 방법을 알고 있습니다. 당신의 봉우리가 무엇인지 알고 있습니다.

다시 말하지만, 먼저 알고하기 위해 사용의 범위를 알고 있어야 확장 할 수 있습니다.


무엇을 하든지 처음부터 시스템을 모든 요구에 맞게 확장 할 수 있도록 설계 할 수는 없습니다. 시스템이 실행되면 종종 예상치 못한 병목 현상을 발견하게됩니다 (예 : 로컬 네트워크 대역폭). 어쨌든, 내 조언은 확실히 highscalability.com입니다 :)


나는 그것을 위해이 책을 제안 할 것이다 :

http://www.amazon.com/Scalable-Internet-Architectures-Developers-Library/dp/067232699X/ref=sr_1_1?ie=UTF8&s=books&qid=1243267630&sr=8-1

이 책은 주로 PHP 책이지만 아이디어는 모든 웹 스택에서 동일합니다.


이것이 바로 당신이 필요로하는 것입니다! 애플리케이션 아키텍처 가이드는 Microsoft Patterns and Practices 팀에서 설계자를 돕기 위해 작성되었습니다.


이것은 주제에 대한 좋은 소개입니다. IBM developerWorks에는 확장 가능한 애플리케이션을위한 아키텍처 패턴 사용에 대한 몇 가지 흥미로운 튜토리얼이 있습니다 . 여기여기 .

참고 URL : https://stackoverflow.com/questions/907260/how-to-design-scalable-applications

반응형