우리는 향후 일부 서비스와 통합될 임베디드 장치를 개발하고 있습니다. 이 장치에는 특정 사용 사례에 대한 제한된 기능 세트와 사용자 정의 모듈이 있습니다. 이 장치는 ARM 아키텍처를 기반으로 하며 수정된 Debian 버전을 실행합니다. 네트워크 및 주요 구성 설정을 위해서는 작은 웹 서비스를 작성해야 합니다. 안전하고 가벼워야 합니다. 저는 경량 웹 서버(예: lighttpd)와 언어(예: Python)를 혼합하여 테스트했고 프로토타입이 작동하도록 했습니다. 초기 단계에서 구성을 푸시한 클라이언트와 통합될 수 있는 작동하는 웹 서비스가 있어야 합니다. 내 관심사는 이것이 가볍더라도 이를 구성하기 위해 장치에 대한 높은 수준의 액세스 권한이 있는 장치에 완전한 기능을 갖춘 웹 서버를 배포할 필요가 없다는 것입니다. 구성 후 이 프로세스를 비활성화하더라도
완전한 웹 서버를 보유하는 것 외에 작은 REST API를 보유할 수 있는 방법이 있습니까? 나는 Restbed C++ Rest API를 테스트했습니다. 이는 Python 기반의 복잡한 서버리스 웹 서비스입니다. 하지만 나도 Python을 배포하고 싶지 않습니다. 이 서비스는 10개 미만의 매개변수만 클라이언트에 전송하므로 이는 다소 과도한 수준입니다. 데몬과 같은 서비스 없이 이를 달성할 수 있는 안전한 방법이 있습니까?
답변1
질문이 다소 모호하고 논쟁의 여지가 있지만 질문을 던져 보겠습니다.골란표준 라이브러리에는 사용하기 매우 쉬운 서버 패키지가 있습니다. 이는 C와 매우 유사하며 거의 모든 플랫폼 및 아키텍처에서 기본 실행 파일로 컴파일되며 아래와 같이 몇 줄만으로 매우 간단한 웹 서버를 호스팅할 수 있습니다.
package main
import (
"fmt"
"log"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
}
func main() {
http.HandleFunc("/", handler)
log.Fatal(http.ListenAndServe(":8080", nil))
}
보안을 원할 경우 자체 서명된 인증서를 생성하여 TLS를 쉽게 설정한 다음 http.ListenAndServe를 다음으로 바꾸면 됩니다.err := http.ListenAndServeTLS(":10443", "cert.pem", "key.pem", nil)
매우 가벼워서 어디든 쉽게 달릴 수 있습니다. Eli가 댓글에서 깔끔하게 지적했듯이 크로스 컴파일도 수행하기가 매우 쉽습니다. 즉, 임베디드 장치에 빠르게 구축하고 배포할 수 있다는 의미입니다.