빠르고 가벼운 클라우드 기반 마이크로서비스 프레임워크입니다.
스택 오버플로 | 구글 그룹 | 기터 채팅 | 하위 레딧 | 유튜브 채널 | 문서 | 기여 가이드 |
가볍다는 것은 가볍고, 번개처럼 빠르며, 클라우드 네이티브 배포를 위해 최신 Java SE를 사용하여 프로그래밍하는 방법을 밝혀 주는 것을 의미합니다.
저는 2000년 초반부터 Java EE 플랫폼을 사용해 작업해 왔으며 성능 및 생산성 문제를 겪었습니다. 2014년에 저는 IT 산업이 모놀리식에서 마이크로서비스로, 온프레미스 데이터 센터에서 퍼블릭 클라우드로 이동하고 있다는 사실을 깨달았습니다.
내 애플리케이션의 생산 비용을 줄이려면 Java에서 작은 메모리 공간, 높은 처리량 및 낮은 대기 시간을 갖춘 경량 플랫폼을 찾아야 합니다. Java EE와 Spring/Spring Boot는 너무 무거워서 고려하기 어렵습니다. 다른 경량 Java 플랫폼은 모두 비즈니스 로직과 기술적 교차 문제를 분리하는 데 있어 서로 다른 문제를 안고 있습니다. 게다가 클라우드 네이티브도 아니고 컨테이너/클라우드용으로 설계되지도 않았습니다.
적합한 것을 찾지 못한 채 원칙에 따라 Undertow HTTP 코어 위에 오픈 소스 플랫폼 light-4j를 구축하기 시작했습니다. 나의 접근 방식은 매우 과격하고 대기업 제품에 반대하기 때문에 온라인과 오프라인에서 일부 단체로부터 지속적으로 공격을 받았습니다. 그러나 나는 나의 접근 방식이 미래의 방향이라고 확신하고 지속적인 개발을 위해 모든 노력을 기울이고 있습니다. 오늘날 많은 기업이 생산에 light-4j를 사용하고 있으며 매우 긍정적인 피드백을 받고 있습니다. 더욱이 프레임워크에 전념하고 플랫폼을 확장하여 생태계를 구축하도록 격려합니다.
플랫폼의 혜택을 받는 사용자의 경우, 제가 오픈 소스 프로젝트에 모든 노력을 쏟을 수 있도록 후원자가 되어 주세요.
가장 널리 사용되는 마이크로서비스 플랫폼인 Spring Boot 내장 Tomcat보다 44배 빠르며 메모리의 1/5만 사용합니다. 다음은 Spring Boot 및 기타 마이크로서비스 프레임워크와 비교한 벤치마크 결과입니다. 다음은 다른 웹 프레임워크와 타사 비교입니다.
OpenAPI 사양을 설계하고 이를 통해 서비스를 생성합니다. 사양은 또한 보안 확인을 구동하고 런타임에 유효성 검사를 요청하는 프레임워크의 일부입니다.
단위/엔드 투 엔드 테스트 스텁은 고품질 제품에 대한 테스트 중심 접근 방식을 가능하게 하기 위해 생성됩니다.
더 나은 개발자 생산성을 위해 독립 실행형 애플리케이션과 마찬가지로 IDE 내에서 디버깅합니다.
Dockerfile 및 DevOps 지원 파일은 Docker화 및 프로덕션에 대한 지속적인 통합을 지원하기 위해 생성됩니다.
모든 오픈 소스 프레임워크는 Java로 구축되었으며 내부적으로 Nodejs 프레임워크를 작업하고 있습니다. 앞으로는 Golang 프레임워크도 제공할 수 있으며 모두 동일한 생태계와 시장을 공유하고 있습니다.
보안을 위한 OAuth2 서버와 프로덕션 모니터링 및 관리를 위한 포털입니다. 포털은 클라이언트와 서비스를 함께 연결하는 마켓플레이스이기도 합니다.
프로젝트를 시작하는 방법에는 두 가지가 있습니다.
light-codegen을 사용하여 작업 프로젝트를 생성할 수 있습니다. 현재 light-rest-4j, light-graphql-4j, light-hybrid-server-4j 및 light-hybrid-service-4j를 지원합니다. 가벼운 최종 코드 생성기가 출시됩니다.
light-codegen 프로젝트 README.md는 예제와 함께 생성기를 사용하는 네 가지 방법을 설명합니다.
프로젝트를 시작하는 다른 방법은 light-example-4j에서 복사하는 것입니다.
이 예제에 대한 설명을 찾을 수 있습니다
또한 몇 가지 튜토리얼이 있습니다.
IDE에서 실행/디버깅하려면 기본 클래스 "com.networknt.server.Server"를 사용하여 Java 애플리케이션을 구성해야 하며 작업 디렉터리는 프로젝트 폴더입니다. 컨테이너가 없으며 독립형 Java 애플리케이션에서 작업하고 있습니다.
기본 클래스가 com.networknt.server.Server이고 작업 디렉터리가 프로젝트 루트 폴더인 Java 애플리케이션을 만듭니다. POJO 애플리케이션처럼 서버를 디버깅할 수 있습니다.
mvn exec:exec
java -jar target/demo-0.1.0.jar
Ctrl+C를 사용하여 서버를 종료할 수 있지만 프로덕션에서는 다음 명령을 사용하십시오.
kill -s TERM <pid>
서버에는 종료 후크가 있으며 위 명령을 사용하면 서버를 정리할 수 있습니다. 예를 들어 진행 중인 요청을 완료하고 데이터베이스 연결을 닫습니다. 서비스 레지스트리 및 검색이 사용되는 경우 서버는 종료 이벤트를 서비스 레지스트리로 보내고 모든 클라이언트가 종료되기 전에 로컬 캐시를 새로 고칠 때까지 30초 동안 요청 처리를 계속합니다. .
Light-4j 및 모든 light-*-4j 프레임워크는 Apache 2.0 라이센스에 따라 사용할 수 있습니다. 자세한 내용은 LICENSE 파일을 참조하세요.