현재 Google 네트워크에는 3 개의 사이트가 있습니다. 하나는 Ruby on Rails로 작성된 것이고 다른 하나는 PHP로 작성된 것입니다. 모든 사이트는 동일한 데이터와 로직을 공유하는 경향이 있습니다. 필자는 PHP 측의 레일 사이드에서 많은 작업을 반복해야한다는 것을 알게되었습니다. 이것을 통합하기위한 공통의 내부 API가 필요한 것처럼 보입니다. 전에 API를 작성한 적이 없으며 몇 가지 질문이 있습니다. 내가 별도의 응용 프로그램으로 API를 빌드하는 경우이 두 배 느린 것처럼내부 REST API
성능 것 같습니다. API가 끝날 때까지 전체 요청/응답주기를 거쳐야하므로 공개 애플리케이션 측에서 다시 시도해야합니다. 이 작업을 더 빠르게 수행 할 수있는 방법이 있습니까? 아니면 다른 접근 방식일까요?
로컬 네트워크를 통한 API 액세스 로컬 네트워크를 통해 API에 액세스하려면 어떻게해야합니까? 127.0.0.1을 가리키는 Apache에 가상 호스트를 설정하겠습니까?
Active Resource 내 경우에는 (레일 끝) ActiveResource가 가장 좋은 방법이며, API를 사용하는 데 더 좋은 옵션이 있습니까? 또한 공용 측에서 유효성 검사가 어떻게 작동하는지 궁금합니다. ActiveResource가 유효성 검사 규칙을 재사용합니까, 아니면 공용 측에서 다시 작성해야합니까?
API 보안 API는 로컬 네트워크를 통해서만 (이상적으로) 액세스 할 수 있기 때문에 걱정할 필요가 없습니다. 이 가정에서 나는 맞습니까?
좋은 답변입니다. DNS/Apache를 어떻게 설정해야하는지 조금 이야기 해 주시겠습니까? A 레코드가 127.0.0.1 인 api.mycompany.com에 대한 DNS 항목을 간단하게 작성하면 충분합니까? 또는 서버 IP를 가리키고 해당 IP에만 대한 액세스를 제한하는 방화벽 규칙이 성능에 영향을 줍니까? 또는 IP가 로컬이고 127.0.0.1과 동일하다는 것을 알면 충분히 똑똑할까요? – Andrew
정말 네트워크 토폴로지에 따라 다릅니다. 두 응용 프로그램이 동일한 시스템에있는 경우, 서로를 직접 쉽게 가리킬 수 있습니다. 아파치 내에서 어떤 형태의 가상 호스팅을 사용하고 있다면 올바르게 작동하지 않을 수 있습니다. 이 경우, 로컬 시스템에 호스트 레코드를 설정해야합니다 (즉,/etc/hosts에서 api.mycompany.com을 127.0.0.1로 지정). –
방화벽 질문에 대해서는 아마도 개별 리눅스 배포판을 확인해야 할 것입니다. 예를 들어 Ubuntu에 있다면 UFW로 작업하게 될 것입니다. CentOS/RedHat 등을 사용하고 있다면 iptables로 직접 작업해야합니다. 개인적으로 iptables는 특별한 경우에 다루기가 더 쉽다고 생각합니다. 당신이 만든 API에 들어오는 모든 트래픽을 거의 차단하고 있기 때문입니다. –