BOOTMAN
- RAJA RANJAN SENAPATI
WHAT IS BOOTMAN
Spring Boot makes it easy to create
stand-alone, production-grade Spring
based Java Applications that you can
"just run".
Byteman is a tool which injects Java
code into your running application
without the need for you to recompile,
repackage or even redeploy your
application.
bootman combines Spring
boot and Byteman so that
you can create production
grade spring applications
and monitor/modify run
time behavior on the fly.
https://github.com/rajasenapati/bootman
HOW IT WORKS
Byteman
controller
Byteman
agent library
bootman
Spring
boot app
controllers
Libraries
Spring boot
app
controllers
Libraries
Byteman controller
Byteman agent library
Adds Byteman agent library and controller implementation
(Compile / Build Time)
(Run Time)
Exposes Byteman functionality via swagger endpoint
WHY BOOTMAN
1. Provides a starter app with inbuilt byteman support
2. Exposes byteman functionality as a swagger endpoint
3. Takes care of Java version specific byteman integration nuances
WHAT CAN YOU DO WITH BOOTMAN
1. OnDemand Logging anywhere
- Reduces verbosity and keeps code concise
- Logging can be added/removed as needed during runtime
2. OnDemand Code Patching while you are working on creating/deploying a build with the fix
- bypass a faulty method call based on some condition
- Transform/enrich output to rectify faulty response
3. Enhanced troubleshooting by capturing more context anywhere in the code
- Capture more context at the point of Exception (stack trace, local variables, method variables etc.)
- Capture more context anywhere in the code (call trace from specific caller, , local variables, method variables etc.)
4. OnDemand JVM Stats capture by triggering built-in rules
5. OnDemand performance metrics capture at specific method level
6. Fault injection to check system behavior at fault
- Simulate downtime / timeout of service the app depends On
- No need for mocking as any behavior can be injected at runtime
Useful while troubleshooting in
all environments
Useful during production issues
to maintain business continuity
Useful while troubleshooting in
all environments
Useful during production
support
Useful in Test Environment, although
can be used in production – think
chaos monkey ☺
FURTHER READ
1. Bootman Documentation: https://github.com/rajasenapati/bootman
2. Byteman Documentation: https://byteman.jboss.org/
3. Spring boot Documentation: https://spring.io/projects/spring-boot

Bootman - An approach to inject behavior at runtime in spring boot apps

  • 1.
  • 2.
    WHAT IS BOOTMAN SpringBoot makes it easy to create stand-alone, production-grade Spring based Java Applications that you can "just run". Byteman is a tool which injects Java code into your running application without the need for you to recompile, repackage or even redeploy your application. bootman combines Spring boot and Byteman so that you can create production grade spring applications and monitor/modify run time behavior on the fly. https://github.com/rajasenapati/bootman
  • 3.
    HOW IT WORKS Byteman controller Byteman agentlibrary bootman Spring boot app controllers Libraries Spring boot app controllers Libraries Byteman controller Byteman agent library Adds Byteman agent library and controller implementation (Compile / Build Time) (Run Time) Exposes Byteman functionality via swagger endpoint
  • 4.
    WHY BOOTMAN 1. Providesa starter app with inbuilt byteman support 2. Exposes byteman functionality as a swagger endpoint 3. Takes care of Java version specific byteman integration nuances
  • 5.
    WHAT CAN YOUDO WITH BOOTMAN 1. OnDemand Logging anywhere - Reduces verbosity and keeps code concise - Logging can be added/removed as needed during runtime 2. OnDemand Code Patching while you are working on creating/deploying a build with the fix - bypass a faulty method call based on some condition - Transform/enrich output to rectify faulty response 3. Enhanced troubleshooting by capturing more context anywhere in the code - Capture more context at the point of Exception (stack trace, local variables, method variables etc.) - Capture more context anywhere in the code (call trace from specific caller, , local variables, method variables etc.) 4. OnDemand JVM Stats capture by triggering built-in rules 5. OnDemand performance metrics capture at specific method level 6. Fault injection to check system behavior at fault - Simulate downtime / timeout of service the app depends On - No need for mocking as any behavior can be injected at runtime Useful while troubleshooting in all environments Useful during production issues to maintain business continuity Useful while troubleshooting in all environments Useful during production support Useful in Test Environment, although can be used in production – think chaos monkey ☺
  • 6.
    FURTHER READ 1. BootmanDocumentation: https://github.com/rajasenapati/bootman 2. Byteman Documentation: https://byteman.jboss.org/ 3. Spring boot Documentation: https://spring.io/projects/spring-boot