Giter Site home page Giter Site logo

jni_test's Introduction

Inspiration

I always wanted to learn new technologies but was limited due to my mediocre machine. I have 20 or more microservice applications with multiple middlewares running on Openshift environment and local development is just not possible due to the sheer number of CPU and RAM required to run the complete application. I was planning to move them to Quarkus to reduce the memory footprint and CPU while maintaining quick startup and low latency. There is always a steel learning curve to get familiarize with the technology. The constant changes require a lot of co-ordination and delays deployment to higher environment. The PR needs to be reviewed and tested on dev environment from multiple developer before running the E2E test and then merge to the main branch. Machine setup for onboarding new resources and making it ready for local development is a humongous task.

What it does

Traditional Java stacks were engineered for monolithic applications with long startup times and large memory requirements in a world where the cloud, containers, and Kubernetes did not exist. Java frameworks needed to evolve to meet the needs of this modern world.

Quarkus, the supersonic subatomic Java, enables Java developers to create applications for a modern, cloud-native world. Quarkus is a Kubernetes-native Java framework tailored for GraalVM and HotSpot, crafted from best-of-breed Java libraries and standards. The goal is to make Java the leading platform in Kubernetes and serverless environments while offering developers a framework to address a wider range of distributed application architectures.

I have created around 22 templates to empower myself and the developer community to embark on their journey to learn and play with Quarkus while talking to multiple middleware and databases. Most of these templates have a User Interface to navigate through the application.

How I built it

I wanted to have a generic Dockerfile to build the different microservices. I looked at multiple images and finalized on ubi8/openjdk-11 due to the security, features and being certified by RedHat. The ubi8/openjdk-11 run-java.sh and Quarkus Configuration provides a lot of flags to customize the application without changing the source code. The Quarkus also allows to build native images which can be run like any executable using -Pnative to the maven build process. I then looked at the quarkus quickstarts to see samples which are available to learn the technology. As part of the hackathon, I have tried different middleware like DynamoDB, S3, Kafka, MongoDB, Postgres, AMQP, MQTT and also reactive programming using SmallRye Mutiny.

Challenges I ran into

I was not able to get the remote development to work on my Mac Machine. I checked with the excellent Bunnyshell support team and they were able to get the remote development to work on their machine. However that did not stop me from playing around with Quarkus in Bunnyshell environment. I was able to do SSH to the component and make the changes in the file. The Quarkus hot reloading feature allowed me to see the impact of my changes in real-time.

I tried DockerImage kind approach for DynamoDB, S3, Kafka and Zookeeper and use the {{ components.NAME.image }} but that was not getting interpolated. I used the docker compose available as part of Database kind to create the custom docker images and overcome that restriction.

Accomplishments that I am proud of

I can now use Bunnyshell EaaS to be used in my organization to overcome some of the bottlenecks. I would be getting the best EaaS to manage my day to day activities. I will have dedicated environment to get PR tested and move to higher environment with much better velocity now. The developers would be productive from day 1 of their joining and can concentrate more on the functionality.

What I have learned

There is no single way to achieve a solution. A small change can create havoc if not tested properly losing the customer confidence in the company brand value. It always helps to test the changes tested E2E in dedicated environment to have more confidence in the release process.

Bunnyshell provides me a unique way to avoid New Developer vs Old Codebase from Day 1 on a Friday night.

Happy Emoji

What's next for Multiple templates - Quarkus quickstarts & sample 3-tier app

The hackathon exposed me to a completely new way to look at my EaaS. I would request my team to learn and play with quarkus through Bunnyshell environment to see how we can best fit the current application migration to Quarkus.

jni_test's People

Contributors

himanshumps avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.