Através do micro framework Spark é possível criar micro serviços web com grande facilidade, envelopar num jar gordo e botar pra rodar numa micro instância Docker.
1. Crie um projeto maven
Configure o arquivo pom.xml
com as seguintes dependências:
<dependencies>
<dependency>
<groupId>com.sparkjava</groupId>
<artifactId>spark-core</artifactId>
<version>2.7.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.21</version>
</dependency>
</dependencies>
2. Configure a montagem do jar
Construa um jar gordo que contenha todas as dependências do seu projeto, assim você pode rodar sua aplicação de forma independente.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>attached</goal>
</goals>
<phase>package</phase>
<configuration>
<finalName>${project.name}</finalName>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>yourgroupid.sparkrest.HelloWorld</mainClass>
</manifest>
</archive>
</configuration>
</execution>
</executions>
</plugin>
3. Crie um endpoint para sua REST API
Crie uma classe chamada HelloWorld
onde você irá configurar um endpoint que receba requisições GET
e devolva o texto simples Hello World
.
import static spark.Spark.*;
public class HelloWorld {
public static void main(String[] args) {
get("/hello", (req, res) -> "Hello World");
}
}
4. Rode sua aplicação
Pra finalizar, execute esse script para compilar sua aplicação
$> mvn dependency:resolver
$> mvn verify
$> mvn package
Agora execute o jar gordo compilado
$> java -jar nomedoprojeto-jar-with-dependencies.jar
Faça uma requisição na URL http://localhost:4567/hello
// Resposta
Hello World
Conclusão
O Spark oferece uma solução de micro serviço para aplicações web REST API com requisições bloqueantes, isto é, uma requisição fica presa numa tread. Portanto, a recomendação é que as aplicações construídas sobre esse framework sejam simples.
Para escalar aplicações que utilizem essa tecnologia é preciso usar uma arquitetura de microserviços com load balancer e criar novas instâncias de acordo com a demanda.
Top comments (0)