-
Notifications
You must be signed in to change notification settings - Fork 13
Kikaha Philosophy
Man cannot discover new oceans unless he has the courage to lose sight of the shore.
Quite often we hear a sales man talking about innovation, how his company will delivery a new version of a software bringing up a huge set of features that will change the way the industry will perform its daily tasks. But a wise developer will take a look into that software and see that the innovation the seller was talking about was just a few buttons that shows new windows. We all know that innovation isn't about offer new features, but a create an experience that really solves the end user's problem.
In 2013, we was engaged to rewrite a legacy C socket server that acted as communication layer to an even more legacy code written in Cobol. The team involved with the project was Java developers and, as should be, names like Tomcat, Jetty and Wildfly come to our mind. Even Play Framework was a possibility at time. After some research and analyzing our hardware limitations we ended up choosing Undertow as basis to our development.
Simple, with low footprint and extremely fast, it performed amazingly under heavy load in production. As the software grew we automated the primary Undertow's APIs. Earlier in 2014 we had opened the source code of these automated parts. Originally named as Undertow standalone it was renamed to Kikaha and incubated at Skullabs.io.
We believe that most of developers need a convention to follow while developing a software. This allow them to perform more focused, once they do not have to define a design to its entire software.
One thing that makes Undertow unique is that it has no concept of a global container. Instead an Undertow server is assembled by the embedding application. This makes Undertow extremely flexible, and the embedding application can basically just pick the parts that they need, and assemble them in whatever way makes sense.
Undertow intent to be more generic and it make sense, specially to JBoss Community, where it behave as basis to Wildfly, the most important Open Source JEE container. Kikaha, in other hand, was designed to bootstrap Undertow transparently, automatically deploying routes with no repetitive start up routines. One of our main goals is to cover all Undertow API, and then, complex configurations like this one will be totally optional.
While most of Java containers consumes a lot of RAM and takes up to 200Mb of disk space, a simple Kikaha application uses less than 5Mb of disk space and consumes near to 10Mb of RAM under average load. We have a heavy load application delivering up to 100K requests per second taking slightly more than 700Mb of RAM.
We know there is a lot of work to make Kikaha's code even more cleaner, but we believe we did a great job providing a nice well crafted API. We follow Uncle Bob's SOLID principles wherever is possible and make a great effort keeping our code coverage very close to 75%.
We expect developers will be at home whenever a developer needs check the source code to find any gap our documentation does not provide.
The software will grow as developer needs grows. We developed a tiny core and provide extensions in a plug-and-play fashion: no configuration lines of code needed.
WELCOME
About
Kikaha philosophy
GETTING STARTED
Getting started in 1 minute
Creating a Kikaha maven project
Architecture overview
TUTORIALS
Logging configuration
Configuring the server
Creating your first HTTP route
Kikaha's command line interface
Configuring your favorite IDE
Wro4j Integration
CircleCI Integration
CORE FEATURES
HTTP and HTTPS
Routing static assets
Dependency injection
Authentication and authorization
Smart routes
ESSENTIAL MODULES
μRouting API
WebSocket Routing
Database Connection Pool
JSON with Jackson
Protobuf
Mustache Templates
Rocker Templates
BCrypt
CLOUD MODULES
Overview of Cloud Modules
Consul.io
Codahale's Metrics
Auth0 Single Sign-On
μWorkers - Actor-like API
Hazelcast
AWS-RELATED MODULES
Overview of AWS-Related Modules
Deploying Applications on AWS
AWS IAM Credentials
AWS EC2
AWS SQS queues
AWS CloudWatch metrics
AWS Application Load Balancer
AWS Lambda functions
AWS X-Ray
ADVANCED TOPICS
Creating custom modules
Routing with Undertow's API
Creating custom cloud modules