It’s no secret that developers are notorious for indulging in anti-social behavior—working long hours, staying up deep into the night, and forgoing many life opportunities—all in the name of building a software they’re passionate about. But why is software so difficult to build? What does it take to build a SaaS (software as a service) platform? I wanted to take a moment to shed some light on what happens behind the scenes at Bloom, particularly with our engineering team.
As previously mentioned, Bloom is a SaaS platform and building it is much like assembling a race car on a budget and a tight deadline. Strategizing and careful planning of every detail are of utmost importance in a project that has tremendous potential to positively impact tens if not hundreds of thousands of users.
Our engineering team is committed to incredibly high standards writing code and implementing architecture, but this does not come easy or cheap. To achieve our goals we have adopted the agile project management methodology working in two-week sprints. Our team firmly believes in constant learning and utilizing the right tools for solving any given problem, consequently, we strive to be knowledgeable in the latest technologies and best available solutions.
As we get into the actual code and infrastructure implementations we are guided by three principles – our product must be scalable, maintainable, and sustainable. To achieve these principles, we decided to follow the micro-service architecture approach to building software. This approach allows us to have small, single responsibility components that are well defined and easy to manage. In other words, just like a car, we needed many parts to function efficiently while providing access for maintenance, upgrades, and modifications. For instance, Bloom is an image-heavy platform. With tens of thousands photographers uploading thousands of images, our platform must quickly and efficiently receive, process, store, and access images of all sizes and types. To solve this challenge, we developed a few micro-services. Here is quick breakdown: one micro-service manages the receiving of images, another processes the images and prepares the needed sizes, another manages permissions, and finally, there is a micro-service that manages retrieval of files and serving them up using our CDN.
This architecture continues to allow us to fine-tune and scale seamlessly. For example, let’s assume three thousand photographers decide to upload one thousand images each all at the same time. Our infrastructure can easily handle this by instantly spinning up thousands of individual virtual servers that would process those images in seconds, resulting in a flawless experience for every photographer. Moreover, because all of the servers only spin up on-demand, we are able to keep the operating costs down and pass those savings to our users. Another example would be the image processing (which also is a separate micro-service). We have built this micro-service in a way that allows us to add post-upload image effects on demand with ease. The effects could include smart cropping, resizing, various overlays such as watermarking, and much more. All of these additions and changes would be easy to add without impacting the rest of the software and thus greatly reducing a possibility of downtime. These is are just some of the ways we utilize cutting edge technology at Bloom to deliver a product that is scalable, maintainable and of course sustainable.
While there are easier ways to build software, we have set out to build a toolset for photographers which utilizes the absolute best technology available ensuring stability and reliability as we scale. We are not taking shortcuts. Yes, we are paying the price of development right now, but it is imperative to set the right foundation. This is the foundation which will allow us to build a solid architecture in the future and not have our innovation and ideas be stumped by technical debt.
We are eager to be recognized as the most technologically advanced, stable, and reliable photographer platform available.