Software Engineer (Cloud native)
Posting date : 04/11/2024
Requisition ID : 35629
Software Engineer (Cloud native)
Job Title: Software Engineer (Cloud native)
Department: Digital
Reporting line: Software Engineering Manager
Location: Kampala or Nairobi
About ENGIE Energy Access
ENGIE Energy Access is the leading Pay-As-You-Go (PAYGo) and mini-grids solutions provider in Africa. The company develops innovative, off-grid solar solutions for homes, public services and businesses, enabling customers and distribution partners access to clean, affordable energy. The PAYGO solar home systems are financed through affordable instalments from $0.19 per day and the mini-grids foster economic development by enabling electrical productive use and triggering business opportunities for entrepreneurs in rural communities. With over 1,800 employees, operations in nine countries across Africa (Benin, Côte d’Ivoire, Kenya, Mozambique, Nigeria, Rwanda, Tanzania, Uganda and Zambia), over 1.9 million customers and more than 9 million lives impacted so far, ENGIE Energy Access aims to impact 20 million lives across Africa by 2025.
www.linkedin.com/company/engie-africa
Job Purpose/Mission
EEA is looking for a talented, self-starting senior Software Engineer (cloud native) to join the team to help deliver affordable solar power and financial services across Africa. This position offers a great opportunity to work alongside an elite team of engineers and business professionals and directly contribute to the success of a mission driven company with social and environmental impact. Candidates will get the opportunity to work in a diverse technology stack at scale and lead the evolution of at least one of our software products.
Responsibilities
Define software engineering strategy and architecture with other leaders, fully responsible for the technical evolution of at least one software product, responsible for the entire software development lifecycle (SDLC) from ideation to deployment
Implement and optimize microservices and RESTful APIs to ensure scalability and ease of integration for cloud-based applications.
Architect and implement solutions that cater to multi-tenant environments, ensuring tenant isolation, efficient resource utilization, and data security.
Develop scalable data partitioning and tenant onboarding solutions to manage multiple tenants seamlessly while maintaining high performance.
Ensure proper configuration and management of tenant-level security, quotas, and SLAs.
Develop and deploy applications using Docker containers to ensure consistency across multiple environments (development, staging, production).
Use Kubernetes to orchestrate containerized workloads, enabling horizontal scaling, high availability, and automated deployments in multi-tenant architectures.
Manage and optimize Kubernetes clusters for tenant-aware scaling, load balancing, and service discovery.
Build and maintain fully automated CI/CD pipelines (using tools like Jenkins, GitLab CI, or CircleCI) to enable continuous integration and continuous deployment across multiple environments.
Integrate automated testing, including unit, integration, and end-to-end tests into CI/CD pipelines to ensure early detection of issues and smooth rollouts.
Implement blue-green deployments, canary releases, and other progressive delivery techniques to reduce downtime and minimize risks during deployments in multi-tenant setups.
Design, implement, and manage cloud infrastructure using AWS, Google Cloud, or Azure, ensuring the infrastructure supports the demands of multi-tenant applications.
Implement infrastructure as code (IaC) using tools like Terraform or AWS CloudFormation to automate provisioning and scaling of infrastructure.
Ensure that the cloud environment is configured for cost-efficiency, elasticity, and fault tolerance while maintaining strict adherence to security and compliance standards.
Implement and manage monitoring and alerting systems (using tools like Prometheus, Grafana, Datadog, or New Relic) to track application performance, usage, and tenant-specific metrics.
Proactively monitor and troubleshoot production issues, ensuring high availability and uptime for multi-tenant applications.
Conduct root cause analysis on system failures or performance degradation and implement necessary optimizations or patches.
Continuously optimize application performance to support the scalability demands of multiple tenants, ensuring low latency and high throughput.
Collaborate with cross-functional teams, including DevOps, product management, QA, and other software engineers, to align on requirements, technical specifications, and deliverables.
Participate in code reviews and provide constructive feedback to peers to improve overall code quality and team productivity.
Stay up-to-date with the latest trends and technologies in cloud-native development, containerization, Kubernetes, and multi-tenant architecture.
Knowledge and skills
Experience:
5+ years of experience as a software engineer with a focus on cloud-native development.
Proficiency in Python and Ruby web frameworks (e.g., Django, Flask, Ruby on Rails, Sinatra).
Strong experience with Docker and Kubernetes for container orchestration in production environments.
Experience building and maintaining CI/CD pipelines in a multi-tenant architecture.
Strong knowledge of RESTful APIs, microservices architecture, and distributed systems.
Cloud Platforms: Expertise in AWS, Google Cloud, or Azure, including services like EC2, Lambda, S3, RDS, etc.
Version Control: Proficiency in Git and branching strategies for multi-tenant development.
Infrastructure as Code (IaC): Experience with Terraform, AWS CloudFormation, or similar tools.
Testing: Proficiency in automated testing frameworks (e.g., RSpec for Ruby, PyTest for Python) and integrating them into CI/CD pipelines.
Monitoring: Experience with application performance monitoring (APM) tools (e.g., Prometheus, Datadog, New Relic).
Strong problem-solving and analytical skills, with a passion for building scalable and reliable systems.
Excellent written and verbal communication skills, with the ability to collaborate effectively across cross-functional teams.
Ability to work in a fast-paced, agile development environment.
Nice to Have
Experience with multi-tenant architecture in a SaaS environment.
Familiarity with serverless architectures (e.g., AWS Lambda, Google Cloud Functions).
Knowledge of GraphQL APIs and their integration with multi-tenant systems.
Understanding of security best practices in cloud-native applications, including IAM roles, data encryption, and secrets management
Qualifications:
Bachelors or Masters in a relevant engineering discipline (Computer Engineering, Software Engineering, Computer Science preferred) or comparable
Language(s):
English
French is a plus
Our Technology stack:
Web framework: Rails 5 , Django, flask, fastapi
Mobile: Android Kotlin/Java
Background task: Sidekiq , Celery, RabbitMQ
Front-end: ActiveAdmin, VueJS, Angular
API: Grape, Devise , DRF, FastApi
TDD: RSpec , PyTest
Search: Thinking Sphinx
Storage: MySQL, Mongo, Cassandra, Redis
Source Control: Gitlab selfhosted for git and CI/CD
Deployment: Capistrano, Ansible
Fresh Ideas Always welcome!
We thank all applicants for their interest, however due to the large volume of applications we receive, only shortlisted candidates will be contacted.
ENGIE is an equal opportunity employer, promoting diversity and committed to creating an inclusive environment for all. All applications are screened based on business needs, job requirements and individual qualifications, without any regard to origin, age, name, sexual identity, orientation or preference, religion, marital status, health, disability, political opinions, union involvement or citizenship. Our differences are our strengths!