Technology Stack (Backend)
Primary Programming Language: Ingenious has selected Java as its primary programming language. Java's robustness, scalability, and mature ecosystem make it an ideal choice for building reliable and high-performance backend services.
Framework - Spring: The backbone of Ingenious's services is the Spring Framework. It provides a comprehensive programming and configuration model, making it easier to build production-grade applications. The framework's modularity and vast ecosystem expedite the development process, from data access to security.
API Development and Maintenance: For creating and maintaining APIs, Ingenious employs Swagger/OpenAPI. This toolkit not only helps in designing and building APIs but also provides documentation, client SDK generation, and API testing capabilities. With Swagger/OpenAPI, Ingenious ensures that its APIs are well-documented, consistent, and easily consumable.
Service Instrumentation with Prometheus: To ensure robust monitoring, all services within Ingenious are instrumented at the code level. Various metrics, including CPU usage, memory consumption, network traffic, I/O operations, API latency, and other application-specific metrics, are captured. Prometheus, a powerful monitoring and alerting toolkit, is used to gather these metrics. This instrumentation provides real-time insights into the system's health and performance, enabling proactive issue detection and resolution.
Code Management and Continuous Integration: All of Ingenious's code is meticulously maintained in git, ensuring version control, collaboration, and traceability. The build and deployment processes are streamlined through Jenkins, a leading open-source automation server. With Jenkins, Ingenious achieves consistent and automated builds. Furthermore, to ensure code quality, SonarQube is integrated into the pipeline, offering continuous inspection and highlighting areas for improvement. All build artifacts are securely stored in Nexus, ensuring reliable and long-term storage for deployment and rollback purposes.
Runtime and Deployment: Kubernetes is Ingenious's primary runtime environment, providing container orchestration capabilities. This ensures that applications are scalable, self-healing, and can be deployed with zero downtime. While Kubernetes is the primary runtime for stateless applications, exceptions are made for certain stateful services like databases, tracking systems, and Kafka nodes, which may require specialized handling. The fundamental unit of deployment within Ingenious is the Docker container. By packaging applications within containers, Ingenious achieves consistency, isolation, and portability across environments.