문제

웹 응용 프로그램의 모듈화에 대한 의견을 찾고 있습니다. 언어에 관계없이 대부분의 응용 프로그램에는 백엔드 DB가 있으며 해당 웹 애플리케이션 서버 (APACHE, IIS, LIGHTP 등)와 함께 동점을 지원하지만 내가 다루는 많은 개발자에게는 Memcached 또는 무엇이든 사용하는 데있어 문제가 있습니다. 웹 앱의 즉각적인 프로세스 공간 외에.

웹 애플리케이션의 모듈화는 내가 믿는 것처럼 좋은 것입니다. 전문 백엔드 서비스?

예를 들어, 몇 년 전, 나는 프론트 엔드 프레임 워크에서 프로세스 집약적 인 ACL 로직을 찢어서 반 클러스터 가능한 서비스 애플리케이션으로 전환 할 것을 제안했을 때 매우 높은 트래픽 웹 사이트를위한 프로젝트 디자인 회의에서 격추되었습니다. 백엔드. 나에게 이점은 Code의 더 깨끗한 분리와 Say PHP & Python 사이의 브리지로 REST/JSON을 사용하여 여러 곳에서 ACL 로직을 재사용하는 능력이었습니다.

내 아이디어에 동의하지 않은 개발자들은 그것이 "너무 복잡하다"고 주장했지만 어떻게 알 수 없었습니까? 내 주장은 프레젠테이션 레이어에 대한 태그 수프가있을 수있는 것처럼, 문제가 발생하면 "수술"수정을 수행하는 데 거의 불가능할 수있는 코드의 논리 수프가 될 수 있고 종종 코드의 논리 수프가 될 수 있다는 것입니다.

따라서 단축하기 위해, 큰 응용 프로그램을 독립적이지만 협력적인 프로세스 (스레드 또는 하위 요청이 아님)로 나누는 CON의 Con & 또는 Pro는 무엇입니까? MySQL, Memcache, 비슷한 서비스 프로세스는 훌륭하지만 왜 다른 것이 없습니까? 이 길을 어떻게 "너무 복잡해 지는가?"

도움이 되었습니까?

해결책

글쎄, 때때로 "너무 복잡한"것은 "나는 안주 지역 밖에서 생각하고 싶지 않다"는 것을 의미한다.

기본 개념은 좋은 것 같습니다.

이제 장단점에 이르기까지, 그것에 대한 첫 번째는 당신이 하다 실제로 사람들이 자신의 안락 지대 밖에서 생각하도록해야합니다. 보다 기술적 인 구성은 실제로 세션 상태를 보존해야한다는 것입니다. 인증 서비스에서 인증 토큰을 선택한다고 가정 해보십시오. 그 토큰은 올바른 사용자 세션과 어떻게 연관되어 있을까요?

또 다른 문제는 더 역동적으로 일어나기 때문에 디버깅하기가 더 어려울 수 있다는 것입니다.

그러나 프로 측에서는 세션 상태 문제를 만족시킬 수 있다면 확장 가능한 아키텍처를 얻을 수 있습니다. 더 많은 서비스가 필요한 경우 서버를 확대하거나 다른 서버를 추가 할 수 있습니다.

다른 팁

웹 애플리케이션 코드에서 핵심 서버/비즈니스 로직 기능을 분리하는 팬입니다. 이것은 몇 가지 다른 이유입니다.

  1. 비즈니스 로직을 더 잘 제어 할 수 있습니다. 이것을 GUI 코드와 혼합하고 혼란을 만들 수있는 방법은 없습니다. 모든 비즈니스 로직을 별도로 유지하려면 나중에 API를 만들어 코드 기능을 호출하고 GUI 코드에 영향을 미치지 않기를 바랍니다.
  2. Get-Go에서 바로 클라이언트의 서버와 통신하기 위해 자신을 사용해야하는 좋은 API를 설계해야합니다. 클라이언트는 웹 인터페이스가 될 수 있거나 원격 사용자 일 수 있습니다.
  3. 안정. GUI 웹 코드는 쉽게 잘못 작성되어 너무 많은 메모리를 소비하여 전체 앱을 중단 할 수 있습니다.
  4. 확장하려면 이러한 별도 구성 요소를 다른 서버로 이동할 수 있습니다. 클러스터링 스케일링을 이미 허용하는 캐싱 시스템을 사용하는 경우 더 많은 캐싱 서버를 추가하는 것만 큼 간단 할 수 있습니다.
  5. 응용 프로그램 업데이트는 GUI 코드에 가장 자주 이루어 지므로 핵심 서비스를 대부분 수행 할 필요가 없습니다.
  6. 보안. 보안 코드가 서버 코드에서 구현되어 있는지 확인할 수 있으므로 누군가가 API를 사용하면 GUI 코드에 들어간 보안 코드를 우회 할 수 없습니다.

당사 시스템에는 Java 응용 프로그램으로 구현 된 핵심 '엔진'서비스가 있습니다. 웹 응용 프로그램은 Java로 작성되며 (현재) 커뮤니케이션은 RMI를 통해입니다. 우리의 사이트/응용 프로그램이 커지고 있으며 아직 Memcached 또는 JCS와 같은 캐싱 서비스를 사용하지 않아도되었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top