General information about the infrastructure¶
Choozr application¶
Choozr is a size guide app that helps you pick the right size of clothing when buying online. The app takes two full-body selfies, calculates your measurement, and creates your size profile. You will then get personalized size recommendations when buying clothes online.
Efficient¶
Complex image processing routines are optimized for mobile devices. All calculations are performed in the device during the measurement process.
Private¶
The measurement can be done by yourself in the privacy of your home. Sensitive images are destroyed after calculations, only measurements are saved. Images are only sent to tailors when the user chooses to share them. And when sharing, they are encrypted with the public key of the tailor.
Innovative¶
Original patent-pending technology. We have developed our computer vision tech from the ground up and shaped the performance with rigorous testing and optimization.
Flexible¶
Our measurement process is designed to work under varying conditions. Our methods are developed using hundreds of test images from real-life examples and we know that it is sometimes hard to find an ideal spacious room with good lighting, white walls, and no furniture.
Geo-distributed, clustered, and microservices-based architecture¶
No SPoFs (Single Point of Failure)¶
All systems are replicated in a way that a failure in one system doesn’t affect the rest. Servers are geographically distributed into different data centers and even countries, while the persistent data is clustered/replicated.
Benefits
As of 2023, we have a 100% uptime since our launch in May 2017.
Server automation¶
Our whole infrastructure is a so-called software-defined data center, that is orchestrated using the powerful foundation of SaltStack for event-driven remote execution and configuration management. This allows us to manage, maintain and scale everything with minimal human interaction.
Benefits
Fewer working hours. Without the need for manual labor-intensive server installation and management, the number of systems administrators can be kept lower.
Platform agnostic infrastructure¶
With the help of server automation, we have built pre-defined “states” of what each component in our infrastructure should do. Using these, we can add new servers from different service providers and our automation installs everything in place.
Benefits
Cheaper services and without vendor locks.
We don’t need to rely on any one company for their services, uptime, and pricing.
And we can use smaller and cheaper service providers that provide only the features we need and use.
Automatically scalable infrastructure¶
The extensive server automation also allows for automatically adding new servers to our network in case the traffic increases.
Benefits
Cheaper and more resilient infrastructure overall as we can use only the number of servers we need and scale with the increasing usage automatically.
Automated server and security monitoring¶
Each component of our cloud infrastructure is automatically added to a monitoring system, where server vitals are monitored. Automated intrusion detection and prevention systems are also set in front of each server, that block suspicious activity, report changes, etc.
For our codebase, the version of each library in use is checked against a database of known vulnerabilities.
Benefits
Better security and faster response to possible threats. Fewer work hours doing repetitive checks that can be automated.
Development and release automation¶
Development of each component is centralized in the GitLab project management, and installed locally on our servers. Using its automation tools, we have built automated tests and checks for new commits to the code version control. These tests prevent broken code that doesn’t pass automated tests from reaching production.
Production releases are automated via continuous integration tests so new version releases can be rolled out to servers without manual installation and downtime.
Benefits
Fewer working hours, and fewer potential human errors, keep code quality higher and provide a way to quickly release new features.
Optimized caching¶
Leveraging the extensive CDN (Content Delivery Network) available with CloudFlare, we cache many parts of the code and resources served to the users. The most notable use of this is in the integration with the online stores, where we cache the request coming to our APIs for size chart checks and queries.
Benefits
Fewer servers are needed, can handle massive amounts of sudden web traffic, and faster performance overall.