What is Transactional messaging team doing?
Transactional messaging is responsible for all communication towards customers related to current state, changes and updates of their reservation. Over the years, our team has come a long way from sending just a few emails. We are now able to communicate via all main communication channels (email, sms, mobile push notifications and social networks). We also need to be able to send thousands of messages within minutes in case of emergencies. On top of that, we are storing, visualising and evaluating the delivered content as well as customer’s interaction with it.
To achieve a high success rate of deliveries and to minimize the sending processing time, our services need to be highly available and scalable on demand.
We release to production multiple times a day. To measure the impact and the health of the release – automated testing, real-time monitoring and alerting is in place. We focus our development on the ability to deliver new features and additional value to our customers. While doing that, we refactor parts of the code which slow the development down.
What technologies do we use?
- Main codebase written in PHP 7.3/7.4
- Nette framework
- Docker images for local development & for production
- Orchestration by Kubernetes, deployed to GCP
- Mysql, Postgres & Elasticsearch as permanent storage
- RabbitMQ for processing asynchronous requests
- PHPstan, Easy coding standard for code analysis, PHPUnit for tests
- Jira for implementing SW development model (Kanban)
- Slack as a main communication tool
- Datadog for real-time metrics, logs, monitors and dashboards
- PagerDuty for alerting
- GoLang for smaller, stand alone services
- React, HTML & CSS to create UI for internal purposes
What will you do?
- Design, develop, integrate and deploy high-quality software aligned with user needs and business goals – finding a balance between business needs and technical excellence
- Write and review performant code – debug and optimize apps – adhering best practices
- Identify and execute tasks in the software development life cycle
- Take ownership of domain/service – healthy architecture, testing, monitoring and documentation
- Actively promote & support continuous learning approach within the team and department, demonstrating a positive attitude
What do we expect from you?
- Professional experience working in a product-driven environment
- Independent and self-driven personality
- Ability to write well-monitored and easily maintainable services
- Ability to deploy and operate services using docker
- Deep understanding of system design, data structures, and algorithms
- Ability to communicate professionally in English
Why it rocks to be at Kiwi.com:
- We deploy immediately after a job is completed, not after months of QA.
- Do, fail, learn – repeat! We understand that mistakes happen and we learn fast.
We decide which cutting-edge technologies are appropriate for the task.
We code at hackathons and other competitions.
We support the local technological community.
We use our work time wisely with a friendly vacation policy and work schedule.
We also like to party and hang out together.
We work, play, relax, workout and even nap in our offices (complete with sauna, gym, masseur, sleeping spots, canteen, chillout zones, free refreshments, etc).
Dogs, kids and parties are welcome in our offices.
We also enjoy common benefits, such as meal vouchers, flexible benefits scheme, sick days, VIP Medical Care, flight vouchers, multisport card, etc.