SlideShare a Scribd company logo
mdnhuda@gmail.com
Microservice? For elaborate history/definition/explanation -
http://martinfowler.com/articles/microservices.html
“Small and focused on
doing one thing well”
No proper definition of small - depends on context.
According to Jon Eves from RealEstate.com.au -
something that can be re-written in 2 weeks.
Autonomous
● Might be deployed as an isolated service
on a PaaS.
● To avoid coupling - all communication
between services themselves must be via
network calls.
● Service exposes a technology agnostic
API.
mdnhuda@gmail.com
Benefits of Micro-service (as opposed to monolith)
Technology heterogeneity
Resilience
Scaling
Ease of deployment
Organizational Alignment
Composability
Optimizing for replaceability
For elaborate explanation on each of them refer to
the book “Building Microservices” by Sam Newman
mdnhuda@gmail.com
Microservice vs SOA
Problems of SOA -
● bloated vendor middleware (MoMs, ESBs)
● technology-aware communication protocols
● no apparent guidance for monolith decomposition
● RPC/RMI tend to create coupling in a way that any change in Server
requires the client to change too
Microservice approach has emerged from real-world use - taking the
developers better understanding of systems/architecture to do SOA well.
Relationship between Microservice approach to SOA is similar to what
Scrum/Sprint is to Agile software development methodology.
mdnhuda@gmail.com
Microservice Development Frameworks
Selecting a single framework defeats the purpose.
Tools should be selected based on the requirement.
Having said that, some clear choices in Java space -
● Dropwizard.io
● Karyon by Netflix
● Spring Boot
mdnhuda@gmail.com
What is Dropwizard?
http://gunshowcomic.com/316
mdnhuda@gmail.com
What is Dropwizard?
Balancing between being a
library and a framework
for developing -
● Rapid
● Ops-friendly
● high-performance
● RESTful web services
mdnhuda@gmail.com
Dropwizard Ecosystem
Jetty Library -
Http/Servlet Container
Jersey - JAX-RS
Implementation for RESTful
Webservices
Jackson - JSON Library
View Bundle
Hibernate Bundle
Freemarker/Mustache
Template
Quartz
Integration
Metrics library
Populate application
performance data
Asset Bundle
Sundial Bundle
Apache HttpClient
Guava
Joda Time
Logback/Slf4j
mdnhuda@gmail.com
What constitutes a Dropwizard Application?
MyConfiguration MyApplication (main)
*.yaml
(dev, test, prod)
dataSource:
driverClass: org.hsqldb.jdbcDriver
user: sa
password:
url: jdbc:hsqldb:file:testdb
properties:
hibernate.dialect: org.hibernate.dialect.HSQLDialect
hibernate.hbm2ddl.auto: update
.
.
logging:
level: INFO
loggers:
io.dropwizard: INFO
au.com.fairfax.media.seo: DEBUG
appenders:
- type: console
.
.
public static void main(String[] args) throws Exception {
new MyApplication().run(args);
}
public void initialize(Bootstrap<MyConfiguration> bootstrap) {
// add View bundle, Asset bundle, Hibernate bundle, etc
}
public void run(MyConfiguration conf, Environment environment) {
// initialize and register application objects
// - services, dao, resource end-points, health-checks
}
Running a fully functional autonomous microservice is as simple as -
$ java -jar <myservice.jar> server <myconfig>.yaml
mdnhuda@gmail.com
Anatomy of a Jersey Resource: RESTful Web-service Enabler
@Path("report")
public class ReportResource {
private Dao dao;
@GET
@Produces(TEXT_HTML)
public ReportView showReport() {
ReportView reportView = new ReportView();
reportView.addModel(...);
return reportView;
}
@GET
@Timed
@UnitOfWork
@Path("by-date")
@Produces(APPLICATION_JSON)
public Message<List<ArticleCount>> reportByDate(@QueryParam("date") Date date) {
List<ArticleCount> counts = dao.getList(...);
return new Message<>(Message.SUCCESSFUL, counts);
}
}
public class ReportView extends View {
private Map<String, Object> model = new HashMap<>();
public ReportView() {
super("report.ftl");
}
public void addModel(String key, Object value) {
model.put(key, value);
}
public Map<String, Object> getModel() {
return model;
}
}
http://localhost:8080/report
Collect performance metric
Ensures Transactional operation
View rendering by
Freemarker Template
http://localhost:8080/report/by-date
Alternatively, your
service end-point could
only serve JSON data,
and all view rendering
logic reside in client.
mdnhuda@gmail.com
Ops Friendly?
Easy to provide different configurations/run-modes
Built-in application metrics (such as @Timed)
Logging/Additional Health-Checks
Thread dump
Optional integration with Operational tools - Graphite,
Nagios
environment.healthChecks().register("shareCountAPI",
new SharedCountApiHealthCheck(...));
By default Dropwizard collects many
application performance data that can be
consumed from the admin port
(localhost:8081) like a web-service itself.
This makes the integration with the
external monitoring systems convenient.
Different *.yaml file for
different run-modes (test, dev,
prod)
mdnhuda@gmail.com
@RunWith(MockitoJUnitRunner.class)
public class ReportResourceTest {
private static final MyDao dao = mock(MyDao.class);
@ClassRule
public static final ResourceTestRule reportResource = ResourceTestRule.builder()
.addResource(new ReportResource(dao))
.build();
@Test
public void testReportByDateShouldReturnSuccessMessage() throws Exception {
when(dao.getList(...)).thenReturn(Arrays.asList(new ArticleCount()));
Message<> result = reportResource.client().target("/report/by-date").request().get(<expected type>);
assertEquals(Message.SUCCESSFUL, result.getStatus());
}
Testing Web-service End-points
Also, DropwizardAppRule allows starting/stopping the application within the context of a
test case to check the full life-cycle.
mdnhuda@gmail.com
Sample implementation-
https://bitbucket.org/fairfax/seo-shared-count-report
Thank You!

More Related Content

What's hot

What's hot (20)

Dropwizard Restful 微服務 (microservice) 初探 - JCConf TW 2014
Dropwizard Restful 微服務 (microservice) 初探 - JCConf TW 2014Dropwizard Restful 微服務 (microservice) 初探 - JCConf TW 2014
Dropwizard Restful 微服務 (microservice) 初探 - JCConf TW 2014
 
Dropwizard and Groovy
Dropwizard and GroovyDropwizard and Groovy
Dropwizard and Groovy
 
jclouds overview
jclouds overviewjclouds overview
jclouds overview
 
JavaOne LATAM 2015 - Batch Processing: Processamento em Lotes no Mundo Corpor...
JavaOne LATAM 2015 - Batch Processing: Processamento em Lotes no Mundo Corpor...JavaOne LATAM 2015 - Batch Processing: Processamento em Lotes no Mundo Corpor...
JavaOne LATAM 2015 - Batch Processing: Processamento em Lotes no Mundo Corpor...
 
Lecture 2
Lecture 2Lecture 2
Lecture 2
 
[1D1]신개념 N스크린 웹 앱 프레임워크 PARS
[1D1]신개념 N스크린 웹 앱 프레임워크 PARS[1D1]신개념 N스크린 웹 앱 프레임워크 PARS
[1D1]신개념 N스크린 웹 앱 프레임워크 PARS
 
Using VueJS in front of Drupal 8
Using VueJS in front of Drupal 8Using VueJS in front of Drupal 8
Using VueJS in front of Drupal 8
 
Micronaut For Single Page Apps
Micronaut For Single Page AppsMicronaut For Single Page Apps
Micronaut For Single Page Apps
 
CQRS and Event Sourcing for Java Developers
CQRS and Event Sourcing for Java DevelopersCQRS and Event Sourcing for Java Developers
CQRS and Event Sourcing for Java Developers
 
REST in Peace
REST in PeaceREST in Peace
REST in Peace
 
AtlasCamp 2015: How HipChat ships at the speed of awesome
AtlasCamp 2015: How HipChat ships at the speed of awesomeAtlasCamp 2015: How HipChat ships at the speed of awesome
AtlasCamp 2015: How HipChat ships at the speed of awesome
 
JavaCro'14 - Securing web applications with Spring Security 3 – Fernando Redo...
JavaCro'14 - Securing web applications with Spring Security 3 – Fernando Redo...JavaCro'14 - Securing web applications with Spring Security 3 – Fernando Redo...
JavaCro'14 - Securing web applications with Spring Security 3 – Fernando Redo...
 
50 features of Java EE 7 in 50 minutes at JavaZone 2014
50 features of Java EE 7 in 50 minutes at JavaZone 201450 features of Java EE 7 in 50 minutes at JavaZone 2014
50 features of Java EE 7 in 50 minutes at JavaZone 2014
 
Android rest client applications-services approach @Droidcon Bucharest 2012
Android rest client applications-services approach @Droidcon Bucharest 2012Android rest client applications-services approach @Droidcon Bucharest 2012
Android rest client applications-services approach @Droidcon Bucharest 2012
 
Java Configuration Deep Dive with Spring
Java Configuration Deep Dive with SpringJava Configuration Deep Dive with Spring
Java Configuration Deep Dive with Spring
 
Play framework productivity formula
Play framework   productivity formula Play framework   productivity formula
Play framework productivity formula
 
Writing RESTful web services using Node.js
Writing RESTful web services using Node.jsWriting RESTful web services using Node.js
Writing RESTful web services using Node.js
 
MeteorJS Introduction
MeteorJS IntroductionMeteorJS Introduction
MeteorJS Introduction
 
Containerless in the Cloud with AWS Lambda
Containerless in the Cloud with AWS LambdaContainerless in the Cloud with AWS Lambda
Containerless in the Cloud with AWS Lambda
 
Spring4 whats up doc?
Spring4 whats up doc?Spring4 whats up doc?
Spring4 whats up doc?
 

Viewers also liked

Dropwizard at Yammer
Dropwizard at YammerDropwizard at Yammer
Dropwizard at Yammer
Jamie Furness
 

Viewers also liked (6)

Android 3.1 - Portland Code Camp 2011
Android 3.1 - Portland Code Camp 2011Android 3.1 - Portland Code Camp 2011
Android 3.1 - Portland Code Camp 2011
 
Dropwizard at Yammer
Dropwizard at YammerDropwizard at Yammer
Dropwizard at Yammer
 
Dropwizard
DropwizardDropwizard
Dropwizard
 
Production Ready Web Services with Dropwizard
Production Ready Web Services with DropwizardProduction Ready Web Services with Dropwizard
Production Ready Web Services with Dropwizard
 
Dropwizard
DropwizardDropwizard
Dropwizard
 
Patterns of resilience
Patterns of resiliencePatterns of resilience
Patterns of resilience
 

Similar to Microservices/dropwizard

Web2 0 Incredibles
Web2 0 IncrediblesWeb2 0 Incredibles
Web2 0 Incredibles
anjeshdubey
 

Similar to Microservices/dropwizard (20)

Micro services
Micro servicesMicro services
Micro services
 
Web2 0 Incredibles
Web2 0 IncrediblesWeb2 0 Incredibles
Web2 0 Incredibles
 
Developing microservices with Java and applying Spring security framework and...
Developing microservices with Java and applying Spring security framework and...Developing microservices with Java and applying Spring security framework and...
Developing microservices with Java and applying Spring security framework and...
 
Scale and Load Testing of Micro-Service
Scale and Load Testing of Micro-ServiceScale and Load Testing of Micro-Service
Scale and Load Testing of Micro-Service
 
Full lifecycle of a microservice
Full lifecycle of a microserviceFull lifecycle of a microservice
Full lifecycle of a microservice
 
Architecting Microservices in .Net
Architecting Microservices in .NetArchitecting Microservices in .Net
Architecting Microservices in .Net
 
Cloud APIs Overview Tucker
Cloud APIs Overview   TuckerCloud APIs Overview   Tucker
Cloud APIs Overview Tucker
 
Applying Code Customizations to Magento 2
Applying Code Customizations to Magento 2 Applying Code Customizations to Magento 2
Applying Code Customizations to Magento 2
 
Spring boot microservice metrics monitoring
Spring boot   microservice metrics monitoringSpring boot   microservice metrics monitoring
Spring boot microservice metrics monitoring
 
Spring Boot - Microservice Metrics Monitoring
Spring Boot - Microservice Metrics MonitoringSpring Boot - Microservice Metrics Monitoring
Spring Boot - Microservice Metrics Monitoring
 
4163A - What is Web 2.0.ppt
4163A - What is Web 2.0.ppt4163A - What is Web 2.0.ppt
4163A - What is Web 2.0.ppt
 
Migrate a on-prem platform to the public cloud with Java - SpringBoot and PCF
Migrate a on-prem platform to the public cloud with Java - SpringBoot and PCFMigrate a on-prem platform to the public cloud with Java - SpringBoot and PCF
Migrate a on-prem platform to the public cloud with Java - SpringBoot and PCF
 
DDD Framework for Java: JdonFramework
DDD Framework for Java: JdonFrameworkDDD Framework for Java: JdonFramework
DDD Framework for Java: JdonFramework
 
Microservice Architecture JavaCro 2015
Microservice Architecture JavaCro 2015Microservice Architecture JavaCro 2015
Microservice Architecture JavaCro 2015
 
Microservices with .Net - NDC Sydney, 2016
Microservices with .Net - NDC Sydney, 2016Microservices with .Net - NDC Sydney, 2016
Microservices with .Net - NDC Sydney, 2016
 
Easy integration of Bluemix services with your applications
Easy integration of Bluemix services with your applicationsEasy integration of Bluemix services with your applications
Easy integration of Bluemix services with your applications
 
Component based User Interface Rendering with State Caching Between Routes
Component based User Interface Rendering with State Caching Between RoutesComponent based User Interface Rendering with State Caching Between Routes
Component based User Interface Rendering with State Caching Between Routes
 
Hands-On Lab: Improve large network visibility and operational efficiency wit...
Hands-On Lab: Improve large network visibility and operational efficiency wit...Hands-On Lab: Improve large network visibility and operational efficiency wit...
Hands-On Lab: Improve large network visibility and operational efficiency wit...
 
Microservices with Spring
Microservices with SpringMicroservices with Spring
Microservices with Spring
 
Some questions on microservices
Some questions on microservicesSome questions on microservices
Some questions on microservices
 

Recently uploaded

How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 

Recently uploaded (20)

Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
Studiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting softwareStudiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting software
 
Software Testing Exam imp Ques Notes.pdf
Software Testing Exam imp Ques Notes.pdfSoftware Testing Exam imp Ques Notes.pdf
Software Testing Exam imp Ques Notes.pdf
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
 
Strategies for Successful Data Migration Tools.pptx
Strategies for Successful Data Migration Tools.pptxStrategies for Successful Data Migration Tools.pptx
Strategies for Successful Data Migration Tools.pptx
 
De mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEDe mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FME
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
 
Advanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowAdvanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should Know
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 

Microservices/dropwizard

  • 1. mdnhuda@gmail.com Microservice? For elaborate history/definition/explanation - http://martinfowler.com/articles/microservices.html “Small and focused on doing one thing well” No proper definition of small - depends on context. According to Jon Eves from RealEstate.com.au - something that can be re-written in 2 weeks. Autonomous ● Might be deployed as an isolated service on a PaaS. ● To avoid coupling - all communication between services themselves must be via network calls. ● Service exposes a technology agnostic API.
  • 2. mdnhuda@gmail.com Benefits of Micro-service (as opposed to monolith) Technology heterogeneity Resilience Scaling Ease of deployment Organizational Alignment Composability Optimizing for replaceability For elaborate explanation on each of them refer to the book “Building Microservices” by Sam Newman
  • 3. mdnhuda@gmail.com Microservice vs SOA Problems of SOA - ● bloated vendor middleware (MoMs, ESBs) ● technology-aware communication protocols ● no apparent guidance for monolith decomposition ● RPC/RMI tend to create coupling in a way that any change in Server requires the client to change too Microservice approach has emerged from real-world use - taking the developers better understanding of systems/architecture to do SOA well. Relationship between Microservice approach to SOA is similar to what Scrum/Sprint is to Agile software development methodology.
  • 4. mdnhuda@gmail.com Microservice Development Frameworks Selecting a single framework defeats the purpose. Tools should be selected based on the requirement. Having said that, some clear choices in Java space - ● Dropwizard.io ● Karyon by Netflix ● Spring Boot
  • 6. mdnhuda@gmail.com What is Dropwizard? Balancing between being a library and a framework for developing - ● Rapid ● Ops-friendly ● high-performance ● RESTful web services
  • 7. mdnhuda@gmail.com Dropwizard Ecosystem Jetty Library - Http/Servlet Container Jersey - JAX-RS Implementation for RESTful Webservices Jackson - JSON Library View Bundle Hibernate Bundle Freemarker/Mustache Template Quartz Integration Metrics library Populate application performance data Asset Bundle Sundial Bundle Apache HttpClient Guava Joda Time Logback/Slf4j
  • 8. mdnhuda@gmail.com What constitutes a Dropwizard Application? MyConfiguration MyApplication (main) *.yaml (dev, test, prod) dataSource: driverClass: org.hsqldb.jdbcDriver user: sa password: url: jdbc:hsqldb:file:testdb properties: hibernate.dialect: org.hibernate.dialect.HSQLDialect hibernate.hbm2ddl.auto: update . . logging: level: INFO loggers: io.dropwizard: INFO au.com.fairfax.media.seo: DEBUG appenders: - type: console . . public static void main(String[] args) throws Exception { new MyApplication().run(args); } public void initialize(Bootstrap<MyConfiguration> bootstrap) { // add View bundle, Asset bundle, Hibernate bundle, etc } public void run(MyConfiguration conf, Environment environment) { // initialize and register application objects // - services, dao, resource end-points, health-checks } Running a fully functional autonomous microservice is as simple as - $ java -jar <myservice.jar> server <myconfig>.yaml
  • 9. mdnhuda@gmail.com Anatomy of a Jersey Resource: RESTful Web-service Enabler @Path("report") public class ReportResource { private Dao dao; @GET @Produces(TEXT_HTML) public ReportView showReport() { ReportView reportView = new ReportView(); reportView.addModel(...); return reportView; } @GET @Timed @UnitOfWork @Path("by-date") @Produces(APPLICATION_JSON) public Message<List<ArticleCount>> reportByDate(@QueryParam("date") Date date) { List<ArticleCount> counts = dao.getList(...); return new Message<>(Message.SUCCESSFUL, counts); } } public class ReportView extends View { private Map<String, Object> model = new HashMap<>(); public ReportView() { super("report.ftl"); } public void addModel(String key, Object value) { model.put(key, value); } public Map<String, Object> getModel() { return model; } } http://localhost:8080/report Collect performance metric Ensures Transactional operation View rendering by Freemarker Template http://localhost:8080/report/by-date Alternatively, your service end-point could only serve JSON data, and all view rendering logic reside in client.
  • 10. mdnhuda@gmail.com Ops Friendly? Easy to provide different configurations/run-modes Built-in application metrics (such as @Timed) Logging/Additional Health-Checks Thread dump Optional integration with Operational tools - Graphite, Nagios environment.healthChecks().register("shareCountAPI", new SharedCountApiHealthCheck(...)); By default Dropwizard collects many application performance data that can be consumed from the admin port (localhost:8081) like a web-service itself. This makes the integration with the external monitoring systems convenient. Different *.yaml file for different run-modes (test, dev, prod)
  • 11. mdnhuda@gmail.com @RunWith(MockitoJUnitRunner.class) public class ReportResourceTest { private static final MyDao dao = mock(MyDao.class); @ClassRule public static final ResourceTestRule reportResource = ResourceTestRule.builder() .addResource(new ReportResource(dao)) .build(); @Test public void testReportByDateShouldReturnSuccessMessage() throws Exception { when(dao.getList(...)).thenReturn(Arrays.asList(new ArticleCount())); Message<> result = reportResource.client().target("/report/by-date").request().get(<expected type>); assertEquals(Message.SUCCESSFUL, result.getStatus()); } Testing Web-service End-points Also, DropwizardAppRule allows starting/stopping the application within the context of a test case to check the full life-cycle.