Application Server, Spring Boot, WildFly Swarm

Application servers once ruled the world of Java application development, but no more.

- The decline of the Java application server, James Strachan

Huge Monolith Process

Vs

Loosely-Coupled Microservices

应用演变的趋势:

  • 大的应用(500万行代码)项目被拆分成小块
  • 从开发到部署的时间需要数量级的缩短

微服务设计原则:

  • 模块化
  • 易部署性
  • 独立扩展性

Docker 容器

  • 跨平台安装部署软件
  • 比虚拟机轻量级
  • 运行不同版本号的软件

Containers vs. virtual machines

Containers vs. virtual machines

Docker Engine Architecture

Docker Engine Architecture

Kubernetes

What is Kubernetes

Kubernetes Basic Concepts

Cluster

Kubernetes Clusters

Deployment

App Deployment

Pod

pod

Node

node

Service

Service

Label & Label Selector

Label & Label Selector

Scaling

Scaling

Updating

Updating

Kubernetes Vs WildFly Domain

WildFly Domain

WildFly Domain

WildFly Domain Underlying

WildFly Domain

Spring Boot

  • Auto Configure(pre-defined, context less)
  • Auto Detect(pool, tx, ef, ds)
  • Why starter?(quickly get up and running)
  • Why Jar?
  • Bootstrap - SpringApplication
  • Fine-grained control - initializers, listeners, etc

How to Develop

  • Consider re-use Configuration(spring-boot-starter, spring-boot-starter-jdbc)
  • Develop Configuration
  • Develop interceptor, listener, etc

Auto Configure


@Configuration
@ConditionalOnClass({EmbeddedServer.class, ExecutionFactory.class})
@EnableConfigurationProperties(TeiidProperties.class)
@Import({ Registrar.class })
public class TeiidAutoConfiguration implements Ordered {

ApplicationListener


class TeiidPostProcessor implements BeanPostProcessor, Ordered, ApplicationListener{}

class TeiidInitializer implements ApplicationListener {}

Bean


    @Primary
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource teiidDataSource() {
        return DataSourceBuilder.create().build();
    }

WildFly Swarm

  • WildFly Reconstruction
  • JEE in Microservice
  • Do similar work as Spring

Question & Answer