Inspiration
The idea for the All-In Toolset project came from desiring to make programming development more accessible and genuinely better. I wanted to create a complete set of valuable tools and resources from a developer for developers to improve our lives.
What it does
The All-In Toolset enables developers to deploy and utilize various application stacks. These tools, integrated with the BunnyShell ecosystem, aim to streamline the programmer's workflow and improve productivity.
It works on my machine's problem
You've likely encountered the infamous "It works on my machine" problem. This predicament can be addressed in any application under development. BunnyShell helps solve this issue from one angle, but I want to solve it from another. I noticed that templates are treated more like templates for normal (core logic-like) applications like Django, Python, and PostgreSQL stack. However, what about auxiliary "infrastructure-near" kits that ensure the smooth operation of any application? These are the essential components that no modern application can function without. I'm referring to essential tools like monitoring, logging, tracing, error-tracking, etc. For example, while writing code for sending metrics, testing its functionality beyond the developer's machine is also crucial. In other words, this project's templates can be paired with normal BunnyShell "app-related" templates as a synergy to make an application development even better.
How I built it
The All-In Toolset was created with the current and most efficient tools for developers. Each application stack was designed to meet specific development needs.
What it includes
- 🪵 Grafana, Loki, and Vector for managing logs
- ⚠️ Sentry, PostgreSQL, and Redis for tracking error and diagnostics
- 📡 OpenTelemetry, Jaeger, and Zipkin for distributed tracing
- 📐 Prometheus, PushGateway, and Grafana for traditional monitoring
- 🚇 Chisel and HoppScotch for ingress-like tooling
Grafana, Loki, and Vector
The combination is designed for log management, processing, and visualization. It provides an efficient solution for gathering, processing, storing, and analyzing logs from diverse origins.
Sentry, PostgreSQL, and Redis
The stack combines Sentry, an exceptional error monitoring solution, with the power of PostgreSQL and Redis. With its real-time tracking and analysis features, Sentry offers invaluable insights and proactive notifications, enabling efficient identification, diagnosis, and resolution of issues.
OpenTelemetry, Jaeger, and Zipkin
The stack is an all-encompassing collection of open-source tools for distributed tracing and observability. This stack provides rich functionalities to trace and resolve issues in complex systems.
Prometheus, PushGateway, and Grafana
The stack is a solid solution that allows you to monitor, gather, and visualize metrics in real time. This open-source tool mix conveys you to collect, store, and analyze metrics from different sources.
Chisel and HoppScrotch
The stack enables the secure exposure of local apps to the internet while facilitating API testing. This stack offers developers and testers a comprehensive solution by harnessing the distinctive strengths of these two tools.
Strategy
Regarding the BunnyShell templates strategy, I used compose templates for simplicity. I mainly chose stacks containing at most three components, not making them so complicated to maintain easily in the foreseeable future.
Challenges I ran into
During the development of the All-In Toolset, I encountered various challenges.
- 🛠️ Configuring and integrating different versatile tools and stacks is not easy.
- 🕵️ Thorough understanding and coordination during development about what could be important for regular developers.
- 🌐 Ensuring seamless communication and mandatory data flow between client and server components over HTTP(s). For instance, when it comes to metrics, it's not a standard case for Prometheus to directly push such metrics from the client side. It requires to use additional tools like PushGateway.
- 🤦♂️ Attempting to overcome the complexity of the self-hosted Sentry nature (tried hard, but failed).
- ⚡ Resource utilization tuning for the stack was done to some degree.
- 💻 Writing real-app-like examples in different languages to emphasize how each tool in the stack works.
In terms of the Sentry template, I planned to create the latest version of it but failed (mainly due to the complexity of the self-hosted Sentry nature). However, still planning to make it, as well as tuning the stack to less resource utilization and decoupling some Sentry supervisorsd
components to multiple services.
Accomplishments that I'm proud of
I'm proud to have successfully created a comprehensive toolset that can hopefully simplify a developer's life and improve the quality of final applications overall. I'm satisfied that my toolset provides a cohesive solution that integrates various versatile stacks and tools into one place, allowing programmers to focus on their core development tasks, and reducing the infrastructure-provisioning battles.
What's next?
- 🤙 Enhance and refine existing stacks and tools based on user feedback.
- 🛡️ Improve security by adding authorization.
- 💾 Add a persistence option for each available stack to make it not just ephemeral.
- 💡 Incorporate additional features to enhance resource efficiency, such as lightweight images, decoupling services, kick
supervisord
etc. (spoiler: Sentry has a big room for improvement) - 🔧 Explore integration with more emerging technologies like BunnyShell proposed.
- 💪 Provide a more powerful, user-friendly, and unique development toolset.
A couple of feedback words about the BunnyShell platform
🤩 Amazing things:
- I didn't use the CLI interface much; I mainly used the UI. The web interface was attractive and smooth. And generally beautiful. The white theme is better 😊. I found no major bugs except minor issues when deploying the environment and a pop-up block in the top-right corner. It was hard to close it quickly because it blocked some background elements.
- A very quick way to move inside the container over SSH, impressing.
- Liked, if the wrong template is submitted, the error clearly describes what's wrong, the line number, etc.
😛 Good things:
- Pretty good documentation, I expected more examples about Helm, to be precise, not just snippets on the website, but real examples like you have for Docker Compose.
- Easy to check the logs of the deployed containers, however, if, Pod is stuck and in the Pending status, for instance, there is no way to check the event logs of Kubernetes and understand what's wrong. Or, most probably I didn't figure it out.
😜 Things that might be better:
- Once, my deployment was unexpectedly stuck in a Pending state. I was confused and frustrated, trying different approaches to fix it. After contacting the Support Team, I learned it was a capacity issue where the Pod wasn't allocated due to resource efficiency. Despite being stated in that chat, that a resolution would be provided soon, it took all weekends to start my Pod working and 2-3 days to receive a final response from Support Team, possibly due to the problem occurring over the weekend. Anyway, I'm not aware much about SLA, which was likely fine for my free account at that time 😬.
Thankfulness
I want to express gratitude to the BunnyShell team for the valuable product and the unique experience they have provided. The All-In Toolset wouldn't have been possible without their exceptional platform and guidance.
< 🏆 Happy BunnyShelling 🚀 >
-----------------------------
\
\
/ \
/ _ \
| / \ |
|| || _______
|| || |\ \
|| || ||\ \
|| || || \ |
|| || || \__/
|| || || ||
\\_/ \_/ \_//
/ _ _ \
/ \
| O O |
| \ ___ / |
/ \ \_/ / \
/ ----- | --\ \
| \__/|\__/ \ |
\ |_|_| /
\_____ _____/
\ /
| |
Built With
- bash
- bunnyshell
- chisel
- compose
- docker
- grafana
- hoppscotch
- jaeger
- javascript
- loki
- nginx
- opentelemetry
- postgresql
- prometheus
- pushgateway
- python
- redis
- rust
- sentry
- vector
- zipkin
Log in or sign up for Devpost to join the conversation.