2016-08-20 1 views
-1

마이크로 서 비스 환경에서 사용되는 서버 언어/프레임 워크와 그 잠재적 인 장단점을 더 잘 이해하려고합니다. 내 개인 프로젝트를위한 개발 시간이므로 중요하지 않습니다. 문제를 해결하는 데 필요한 도구를 사용하는 것이 서비스를 개발하는 데 필요한 개발 시간보다 중요합니다.개발 시간 외에도 서버 언어 선택시 고려해야 할 사항은 무엇입니까?

더 많이 생각하면할수록, 그 엘릭서는 90 %의 시간 동안 사용되어야한다고 생각합니다. 그 이유는 두 가지이다 :

1) 동시성

2

을 반드시 많은 사용자가 가장 microservices 0 프로세싱 오버 헤드가) 서비스를 칠 수 의미, 그들은 데이터베이스를 공격하고 JSON을 반환합니다. 나는. 더 빠른 언어로 된 데이터베이스를 얻는 이득은 더 느린 언어를 사용하는 것과 구별되지 않습니다. 문제의 데이터베이스는 데이터베이스 구현 자체가 C++과 같은 더 낮은 언어로 작성되기 때문에 서버 언어가 아닌 데이터가 반환되는 속도를 결정합니다. (사실인가요? Elixir + Postgresql이 Go + Postgresql보다 느리거나 Ruby + Postgresql이 병목 현상입니까? Postgresql 또는 언어가 요청하는 것입니까?)

위의 2가 맞다고 가정하면 나에게 나에게 Elixir는 90 %의 시간을 사용 하겠지만, 트래픽 스파이크에 대한 미래 보장 가능성이있는 서비스를 얻을 것이고 일반적으로 다른 데이터베이스 검색 Rest API와 동일한 실행 속도를 갖기 때문입니다.

이미지 인식 서비스 (예 : Tensor Flow) 용 C++로 이미 구현 된 라이브러리가 있기 때문에 서비스에서 이미지 인식 서비스처럼 프로세서 속도가 필요한 다른 10 %는 C++ 또는 Python으로 구현합니다.

마이크로 서비스에 특정 언어를 사용해야하는 경우 올바른 생각입니까? 그렇지 않다면, 개발 시간 외에 내가 무엇을 고려해야합니까? 위의 2에 해당하는 가정

+0

@enzian이 질문은 프로그래머에게 적합하지 않습니다. 신속하게 투표로 끝내고 닫을 수 있습니다. http://meta.programmers.stackexchange.com/questions/6483/why-was-my-question- 폐쇄 형 또는 폐쇄 형 투표/6490 # 6490 추천 도서 : ** [Programmers.SE는 어떻게됩니까? 스택 오버플로에 대한 지침] (http://meta.programmers.stackexchange.com/q/7182/31260) ** – gnat

답변

0

, 그것은 [...] 나는 시간의 비약 90 %를 사용하는 것이 나에게 추론하기 위하여 서

이러한 종류의 문을 만들 때주의! 그들은 새로운 서비스를 설정할 때 언제나 선택하는 것을 선택하도록 유혹합니다. 실제로 그 서비스가 무엇을해야하는지, 그리고 어떤 언어와 프레임 워크가 당신을 가장 잘 도울 수 있는지 생각해야합니다! 그것은 말했다 : 당신의 2 개의 전제는 진실하다! DB 히트는 가장 비싼 작업이며 동시성은 더 큰로드를 처리 할 때 필수적인 도구입니다. 그것들은 사실이지만 완료되지는 않았습니다. 자원 소비, 플랫폼 동작 등을 생각할 때 다른 조건이 필요합니다.

관리되는 언어 (예 : JVM 또는 .NET 런타임)은 항상 가비지 콜렉션을 수행해야하거나 실행 중에 코드를 컴파일 할 필요가 있고 런타임에 동적 유형을 공제해야하기 때문에 특정 정적 오버 헤드를 암시합니다. 즉, 이들은 더 많은 메모리와 CPU 사이클을 필요로합니다. C++, GO, Rust 등의 다른 언어보다 컴퓨터가 중요합니다.

C++와 같은 언어로 메모리 관리를 직접해야하지만 GO, D, Rust 같은 언어는 JVM 또는 .NET과 같은 완벽하게 관리되는 언어/런타임에 대한 중용을 제공하려고 시도합니다.

언어/런타임의 선택만큼 중요한 것은 귀하의 아키텍처입니다. 고전적인 데이터베이스를 포함하는 모든 것들은 아마도 당신에게 사물의 확장 측면에 문제가 될 것입니다, 디스크를 때리는 모든 것이로드 하에서 당신을 죽일 것입니다!

내 제안은 무엇입니까? 모든 리소스를 염두에 두십시오 (요청 대기 시간 만이 유일한 기준은 아닙니다! 리소스 소비도 큰 문제가 될 수 있습니다!), 서비스가 채워지고 다른 아키텍처의 유효성을 검사해야하는 용도에 가장 적합한 언어와 툴체인을 선택하십시오!