Enabling a secure culture in engineering: the SecEng Team

A sense of separation has sometimes existed between Security and Development, as though the two are not inherently connected. Security considerations have always fed into the way we work at Tes, but without the right connections it can be easy to end up viewing security as an impediment to speedy delivery or vice versa. We started a Security Engineering team (‘SecEng’ if you like) to bridge this gap and ensure our engineering teams see strong security in data handling as critical, and crucially, something firmly within reach.

Read more...

Slimmer micro-services with async-define

Before introducing async-define, I’d like to give some context to explain what problem it solves and why we have to deal with these kind of problems at Tes. micro-services integration One of the most important decisions we had to take when designing our micro-service architecture, is how to make micro-services work together. This is a particularly tricky choice, because you should choose a pattern that allows micro-services to be shipped independently and create the least amount of friction between services (and teams as per Conway’s law).

Read more...

Aligning Divs and Devs: getting a consistent front-end

Imagine discovering your house had subtly changed every time you came home. The cupboard doors open different ways. The light-switches control different lights, and the hot and cold taps in your kitchen swap places. The inconsistency would be maddening – and the same goes for apps and websites. Creating a consistent UI keeps your users sane and orientated. For any product where there are multiple developers, the ideal solution is a shared set of common elements and styles, but this is not simple to achieve.

Read more...

Quick, clean commits with partial linting

Tired of your commits taking >10 seconds? Give this a bash. Linting is great, but no one likes slow commits! At Tes, we use husky to run code when the git precommit hook triggers. Most often, we run npm run lint so that we can catch linting errors before they’re even committed. (We use ESLint for linting.) The problem is that, even when you’re developing microservices, it could take quite a while to lint all the files in your repository.

Read more...

Instrumenting and Observing Microservices Part 2: Are your microservices working together?

If you want to be confident that your users are able to achieve their goals using your service there’s more to do than monitoring the health of individual microservices. You need assurance that your set of microservices are working well together, and when they aren’t, you need the information necessary to fix any problems as soon as you can. This blog follows one Tes team’s mission to better identify and diagnose problems, enabling them to move fast and ship with confidence.

Read more...

Instrumenting and Observing Microservices Part 1: What do you expect from your microservice?

A friend of mine tells a great story of a team avoiding a great deal of grief. All of their system health checks were green, but the live graph of purchases dropped to zero and stayed there. Despite the many positive system indicators, the team were able to see they had a problem and were able able to react quickly to find and to fix it. It turned out that user purchases was a key indicator of success.

Read more...