Engineering at Grovo

 | 

Featured post by Yitzchok Willroth
Engineering Practice Manager at Grovo

image

Grovo is a learning ecosystem built for the 21st century workforce. We empower people to do their best work through effective learning by providing businesses with the technology and content to motivate employees, elevate performance, and create positive company cultures. We recognized that learning at work is broken and are fixing that for our clients and ourselves.

Our Native Tongue

Grovo’s engineers are polyglot and you’ll find a diversity of language throughout our stack, but PHP is our native tongue.  We’re believers in using the right tool for the right job, but for us PHP is the glue which binds.

Data in our DNA

Data is a big part of what we do at Grovo. It’s important to our clients, it’s important to Sales, it’s important to Product, it’s important to Engineering.  An ongoing challenge has been to distill the incredible volume of data which we collect into useful information for such diverse stakeholders while maintaining overall application performance.  

We’ve recently undertaken a large-scale data analytics framework initiative aimed at providing the right data in the right context as soon as it’s required, no matter the stakeholder. This is an ongoing project, but we’re very excited by the initial returns! Our primary datastore utilizes MySQL and Memcached. Our data analytics framework is being built atop Cassandra, Spark, Kafka, and Mesos.

Self-Service PaaS

Our rapid growth has put tremendous pressure upon our infrastructure and delivery pipeline. We’re nearing completion of a continuous delivery initiative, which will empower engineers to instantly and reliably deploy code anywhere, anytime.

Giving “the power of devops” to the software engineering team, our dedicated DevTools team can continue their mission of building out a self-service PaaS which is capable of supporting three-fold growth in 2015 and responding to the needs of ever larger enterprise clients.

Our infrastructure is built upon Amazon Web Services, managed by Aasgard and provisioned via Packer and Chef.  Consul provides service discovery and configuration; monitoring is done using Sensu and SignalFX.  CircleCI provides the backbone for our continuous integration pipeline.

Product & Engineering Alignment

As both the product and engineering teams have scaled, the challenge of  keeping everyone coordinated, aligned, and moving effectively towards our goals has grown. We’ve long considered ourselves a product driven organization, but increasing stresses on Engineering as our platform has evolved to provide a wider basket of services to a greater diversity of clients highlighted the misalignment inherent in that perspective.

We’ve recently synchronized Product and Engineering into a tightly aligned unit.  Collaboration between the teams happens from the earliest stages. Product decisions are made in light of engineering realities. Product loves it! Feature delivery can be projected reliably! Engineering loves it! Features can be developed sustainably! Is Grovo a product driven company? Yes! Is Grovo an engineering driven company? Yes! It’s difficult at this point to envision it working well any other way.

image

Deconstructing the Monolith

A traditional three-tier architecture utilizing the Kohana framework, our existing application is beginning to show its age. Technical debt has accumulated. As our team has grown, the impact of design decisions, appropriate for different product and organizational realities, has become more pronounced. The coordination of effort required by a monolithic codebase has become a drag upon velocity.

We started lean. We’ve grown quickly. We’ve learned a lot. It’s time to put what we’ve learned into practice.

In response to this challenge, we’ve begun deconstructing the monolith into a suite of narrowly focused applications supported by a concert of independent microservices. We’re already seeing the benefits of this initiative. We’ve been able to re-align the engineering team into several smaller, independent squads, able to pursue diverse product goals concurrently and deliver quickly.

We’re excited to have recently added Anthony Ferrara, formerly of Google, to guide our continuing architectural evolution.

Continuous Improvement

Of course, a transition from a monolithic to microservice application architecture without addressing the processes and culture from which the monolith emerged risks simply moving complexity around.

We’re incredibly excited about this challenge!

We recognize that healthy software is the product of healthy practice. We’ve appointed an Engineering Practice Manager tasked with establishing the standard for professional practice within the department. We’re taking the first steps toward full-time pairing and test driven development. Collaboration is becoming a core competency; sharing, learning and growing has become priority one for the engineering team. Code review happens early and happens often.

Our Continuous Improvement initiative seeks to foster an environment in which quality engineers and quality engineering can thrive.  

Grovo, an Underdog.io customer, is hiring.