A large retail company manage their processes and operations using various IT systems that continuously generate vast amounts of data.
Client needed
Client wanted to ensure data integrity and availability by entrusting us with building a robust integration pipeline to handle the vast data generated by various company departments and third-party collaborators.
We did
We chose Apache Kafka as the most suitable tool to build the integration pipeline solution.
Outcome
A solution that efficiently collects, processes, and distributes data in real time to support critical business processes, such as inventory management, stock management, delivery, and more.
COTA Healthcare is a company founded by doctors, engineers, and data scientists. They combine oncology expertise with advanced technology analytics to organize and analyze cancer data to help with advanced patient care and research. The company was developing a platform called Cota Abstraction Platform (CAP) to gather and process oncological data. By the end of 2019, SoftwareMill joined the effort to support the rapid growth of the platform.
Client needed
One major Cota Abstraction Platform pain point was performance decline as data volume increased. The high amount of information and its presentation in the user interface may lead to bottlenecks and performance issues resulting in a poor user experience. Also, it was crucial to allow end users to export, analyze, and conveniently create reports. Another platform's challenge was proper system monitoring implementation.
We did
We participated in the design of the architecture of the CAP system. Our goal was the seamless introduction of new features while retaining the stability and reliability of the project. The initial part of the platform that we started developing was tightly coupled to other parts of the system so we extracted it into a dedicated Scala service with its own CI/CD pipeline. We created a denormalized model optimized just for queries that was derived from original data. We also addressed the need for durable data exports and reporting. Our paramount goal was to migrate CAP to use the newest available versions of language, libraries, and frameworks.
Outcome
Throughout 2019 the client acknowledged how impressed they were with our commitment, execution, and expertise, so in 2020 they decided to form a self-organized team made up exclusively of our engineers. The team was operating in the agile methodology with the client’s Product Owner and Scrum Master. The team acquired responsibility for some modules that were part of the platform. It also helped outside of their scope on demand. Read more about the project in this case study.
An established, well-known trading system based on Scala and Akka. The system was close to its limits of traffic handling.
Client needed
A new reactive platform, written from scratch with scalability and resilience as primary goals. The new platform needed to be able to take over traffic from the current one with minimum downtime.
We did
Our team designed and implemented a set of services that communicate asynchronously thanks to extended use of Event Sourcing approach. This allows flexible recovery, auditing, and service integration. With Akka Cluster, Akka Persistence, Cassandra and Kafka we provide scalability on many levels. We also prepared advanced performance tests to ensure that the solution can handle large growth of transaction volume with time. Additionally, we built a rich monitoring setup around the new system, using Prometheus, Grafana, and Graylog.
Outcome
A performant reactive system allowing fast trading, and processing growing traffic with very high resilience in case of failures. Read more about the project in this case study.
A messaging gateway service that was running on a local data center and was no longer efficient.
Client needed
The client needed to adopt the existing on-premise infrastructure to the cloud environment in order to provide a highly available, scalable and resilient system.
We did
Using Kubernetes, Helm, and Terraform on AWS, SoftwareMill developers were able to quickly test and validate different migration strategies with the aim of minimizing service disruptions down to minutes, not hours or days. The development team has successfully migrated the on-premise system to the AWS cloud and also improved availability, resilience, and scalability of the system. The complexity of the deployment process and the level of software maintenance effort were also reduced.
Outcome
The Intelli Messaging system has increased overall traffic handling capacity and made improvements to critical components and processes along the way. The complete migration from the on-premises data center to AWS cloud solutions took about a year to finish. Read more about the project in this case study: “Migrating SMS Gateway service to the AWS Cloud”.
Previous-generation system which couldn't cope with increasing message loads.
Client needed
There were three main focus areas. First, reliable delivery of hundreds of messages per second. Second, an integrated billing module with a web front-end. Finally, covering new use-cases of the system, for example new interfaces, integrating with other providers.
We did
Implemented a high-performance, reliable SMS message queue, with nightly stress/performance tests. We also developed a web application that allowed for checking of billing status. Also, on top of the system, we created an SMS-iMessage-like solution.
Outcome
Fail-safe and efficient system with high bandwidth.
Flexys is an enterprise collections software that helps companies with debt resolution. It consists of a range of modules that enable creditors to engage with their customers on their preferred channel at the right time, using targeted language. On the technical side, Flexys had an MVP of the product that proved the business model is successful. Client needed an experienced team extension that would help not only with the product kick-off but also the team setup.
Client needed
Our main task was to help Flexys with the technical side of the project while they built the team from the ground-up. We functioned as part of Flexys team and provided them with deep expertise in some of the technologies they use, primarily Scala programming. At the beginning, our main task was reviewing the code base and identifying opportunities for improvements. We started implementing quick fixes and came up with a plan for making major architecture improvements. Our next goal was transferring good practices to the team. We introduced in-house team to the remote work best practices, shared the code review culture and encouraged the start of a technical reading club.
We did
We work in a TEM (Team Extension Model) in which we augment the in-house IT team with developers that support the team with the expertise in a variety of areas including designing project architecture, developing high-quality code and mentoring. This is an ongoing development effort to build new features and functionalities for the market. We helped to develop project architecture including Akka (http, persistence), Cassandra, PostgreSQL and Angular. We also shared our best practices within backend (Scala) and front-end (Angular) technologies.
Outcome
We contributed both to the product’s code and team setup by sharing our best practices. The joint effort of the whole team resulted in the successful migration setup. We managed to launch the back-office part of the app, as well as brought the customer-facing part of the app to the next level. Thanks to our support Flexys has been able to deliver to their first client.
Old, ineffective system which took hours to process daily data batches.
Client needed
Our customer builds systems used by energy providers to build long-term client relationships, increase efficiency in energy use and manage energy demand.
We did
We helped to build a big data system, capable of processing huge amounts of data daily and later analysing them using both statistical and machine learning methods.
LPP S.A. collects online customers’ data (mainly: orders stored in databases and customers’ online behaviour) from various sources. The company approached SoftwareMill to help them streamline data pipelines to be able to capture crucial metrics and derive business value in real-time.
Client needed
Processing data, arriving at high velocity, required battle-proven tools for stream processing and the preparation of data for a recommendation engine. Due to the nature of the online retail business client needed a system featuring self-healing, as well as load balancing. Plus monitoring of the infrastructure health and performance.
We did
Seven streaming applications have been delivered as well as devops scripts setting up Kubernetes and all necessary tools. As a result, our customer was able to attach custom dashboards to display the sales volume as well as feed their recommendation engine in a cost effective way without latency.
Outcome
A transformation of the existing batch-based process into a data streaming platform built up on mature and popular open source tools. The reports are fed in real-time via stream processing applications build up on Kafka Streams and Apache Beam allowing LPP S.A. to interact with online customers in real-time.
SwissBorg is a team of fintech experts and engineers that are creating a holistic crypto wealth management ecosystem accessible to everyone. As a pre-launch of their show-case feature, the Wealth App, SwissBorg has built the Community App, a mobile app game that allows you to predict, learn and earn Bitcoin.
Client needed
We joined our client’s team and together developed the mobile game. On the technical side, we were responsible for building the back-end of the app, mainly in Scala and Akka.
We did
The part of the app that we developed consists of the following elements:
Forecast module which evaluates bids versus the exchange rates every 24 hours;
Calculation module that counts each player’s score. Additionally, we created an advanced notifications module that sends emails, SMS and push- notifications to users notifying them about the result of their latest bids. Apart from programming, we also engaged in Kubernetes implementation in the project. We joined the client’s team on-site to share our knowledge, experience and make the implementation smooth. Finally, we were responsible for creating platform tests based on behave tool.
Outcome
The project was delivered on time and without any major outage on production. Our contribution to the project resulted in high customer satisfaction.
The app has reached more than 14 000 (as of May 2019). It’s a fun, easy to use app that lets you predict the price of Bitcoin and earn at zero cost. It’s available on iOS & Android.
Reco.se is a Swedish tech company behind the largest independent review site in Sweden where customers describe their previous experiences with a variety of companies. The platform comprises two websites listing different kinds of businesses - reco.se is for local businesses and recotrust.com is for e-commerce vendors and sites.
Client needed
We’ve joined our clients team to quickly scale their efforts and together we have been developing the platform on an ongoing basis. The scope of our work includes new features development, but also DevOps tasks and bug fixing. On the technical side, we are responsible for building multiple microservices to add new functionalities along the way, mainly for integrations with external systems as well as for internal data analysis to support business decisions.
We did
We contributed to a number of infrastructure projects; one of which was moving from self-hosting to GCP cloud. We were also responsible for a major refactoring that included, for example, mailparsing project and search API project with Elastic Search integration.
Outcome
The platform is currently the largest independent review site in Sweden. Since March 2019, users who want to leave a review need to get verified with their bank ID, which contributes to the website transparency and credibility. Launching recotrust.com enabled the company to dive into e-commerce. Read the case study Review Platform - Project Acceleration and New Features Development
Online wallet for the custom currency and for Bitcoin, with transactions history and recovery tool in case the online wallet was broken.
We did
We built backend system for wallet for both currencies, and analyser of blockchain, for discovery of transactions transferring money to users addresses from outside. Wallet addresses are multisig, where 2 keys out of 3 are enough to sign transaction. User has 2 private keys, our customer keeps 1, so user alone can transfer money from their addresses, but our customer needs user’s cooperation to do so.
Outcome
Finished and tested product was delivered to customer. The customer has individual users accounts on it, as well as cryptocurrency exchange. Users are able to transfer their money, generate addresses, and see all their transactions history.
Legacy system with zero test coverage, tightly coupled with Microsoft infrastructure and difficult to scale/maintain. Web interface was full of bugs and not mobile friendly.
Client needed
High quality, scalable code and architecture that will be easy to extend and maintain. Also test coverage and infrastructure automation were two of the most important goals.
We did
New responsive web front-end, developed in a "mobile-first" spirit. Highly scalable API bridge that provides consistent and uniform REST API and makes further migration to Scala micro services fully transparent. We built a mobile-aware, WYSIWYG CMS and made static content management straightforward. We made deployment & infrastructure management declarative and fully automated.
Outcome
No vendor lock-in and help with spinning up client's own dev team. Due to high automated tests coverage (> 80%) and zero-downtime Continuous Delivery clutched with advantages of applying git-flow patterns, deployments are just a matter of formality. Project gained more confidence
Our consultants, certified with Confluent Certified Developer for Apache Kafka, helped clients with:
integrating Kafka in an enterprise environment, communicating with PostgreSQL, Oracle, ActiveMQ, RabbitMQ and other technologies, through Kafka Connect and custom Kafka applications.
setup and maintenance of Kafka clusters using Kubernetes, choosing an appropriate partitioning strategy and sizing.
leveraging Kafka in a reactive message processing pipeline, gracefully handling traffic bursts and distributing load through websockets to connected clients.
We are a consulting partner of Confluent. Our skills have been proven by numerous commercial projects, see Clutch for testimonials.
user and content rights management system for set-top boxes,
storage and processing billions of energy-related readings.
We are a consulting partner of Datastax. We've gained hands-on experience architecting systems with Cassandra, one of the most widely used scalable, fault-tolerant database, by deploying it in clusters and writing applications querying Cassandra in a number of projects.
Highly coupled, microservice-based MVP with technical debt (classic 3 layer architecture) that was hard to maintain and problematic when adding new features required by customers or business department.
Client needed
To get rid of the technical debt, prepare the system for easy and rapid implementation of new functionalities.
We did
Refactored large parts of the system to DDD-like architecture which decoupled the components and made implementing new features easy.
Outcome
Easily extendable, well tested and lowly coupled components.
Knip provides a mobile application for hassle-free insurance overview and management.
Client needed
Analytical application for data warehouse.
We did
Developed the integration module between the data warehouse and the mobile app. Created an algorithm to match customer preferences with the best offers available on the market at a given time. Created a recommendation service (REST API and a web frontend).
Outcome
A big data system, capable of processing huge amounts of data daily and later analyzing them using both statistical and machine learning methods. Ready to use mobile application. No upgrades/new features required.
IP Integrated works with banks, airlines, and messaging companies providing accurate SMS reporting tools. There was existing legacy system, which didn't scale with increased demand.
Client needed
Our main task was to implement efficient daily imports of SMS delivery reports. Secondly, our client neded an analytical platform, used later in the billing module. Finally, a modern web front-end was needed.
We did
We developed an effective application that allowed for checking of billing status. We've also built a reporting platform for bulk SMS delivery, live status tracking for customers with analytics, data export and billing. The above was accompanied with a fast and responsive UI.
Outcome
An efficient billing platform delivered to our Client.
Ineffective and unreliable system without automation and integration with various providers.
Client needed
Increase the automation of the loan repayment process.
We did
Implemented automatic and maintenance-free loan repayment system for customers and company employees. Created independent module, easy to modify and develop without affecting core business activity.
Outcome
Option to pay loan installments automatically by credit card. Automatic reminders, hints for account numbers and confirmations for customers. 5x reduction in service time.
New dev team to work on the core back-end features.
We did
We helped to build a workflow engine that ensures flexibility and compliance. We implemented new features, code and testing patterns using best practices.
Outcome
Pilot release in progress, updating system as needed. Vocado reduced costs (no paperwork, no manual calculations) for schools in the US.
An existing application in Ruby, which had severe performance and scalability problems.
Client needed
A scalable API service with rapid development of new features.
We did
Migrated the backend to Scala, provide continuous development of new API endpoints used by iOS and Facebook applications. Implemented a recommender system which blends a number of preference inputs. Check out case study on our blog
Outcome
Yap.tv went global (lots of data) with their social TV mobile application (Facebook and Twitter integration).
To improve reliability and quality of the existing software.
We did
We've improved and extended a broker which unifies multiple VMware products' APIs into a single REST API with complex asynchronous execution support and informative error handling.
Outcome
A well-tested backend component with a clean API, built with extensibility and easy troubleshooting in mind.
SoftwareMill helped develop a web app that detects a person's skin type and color for an e-commerce solutions company. The team worked on AI and ML algorithms, as well as Shopify and Google Cloud integrations. Find out more on Clutch.
The Codos Foundation approached ReasonField Lab with the challenge of detecting transportation modes based on data from mobile phones. The team's role would be to create an end-to-end solution that utilizes human activity recognition to calculate CO2 emission avoidance.
Client needed
The Client's primary objective is to reward users for commuting sustainably. By automatically detecting the mode of transportation, the Codos app calculates CO2 avoidance compared to a combustion engine car and rewards users accordingly – a noble idea and a viable product.
We did
The result of the first round of the workshops was the transport mode detection (TMD) research document in which we described the steps needed to construct a flexible machine learning solution. This led to the development of platform architecture and a mobile application research (annotation) mode. Then, we were collecting a lot of data base on the specified rules and processing it. After six months of development, we were ready for user acceptance tests (UAT) of the system PoC. The cloud platform was ready and capable of serving requests from the mobile application. The machine learning transport mode recognition service was in place and waiting to run inference against acquired sensor data.
Outcome
In about half a year, we designed and implemented an advanced proof-of-concept. The solution can produce and utilize a deep-learning model capable of recognizing transport modes. We combined multiple skill sets: machine learning, backend development, mobile development, blockchain, GIS, and scientific research, to provide Codos with the desired functionalities.