Question: What is your biggest accomplishment in your career?
Answer: My Java Service that I developed recently. Zero downtime.

The current company’s product is based on a micro-service architecture that draws underlying architecture of UI, application router, services A, B, and C. There were a lot of tickets due to authentication problems between services. Given service A wants to authenticate to service B with Basic HTTP authentication (username and password). If service B’s identity provider (IDP) is down, then the entire application goes down.

I designed a token service (JSON web token). It doesn’t use a username and password, but a token instead. So Service A will use the token to talk to Service B. A Token User Service generates a token for Service A (includes audience, expiry, id, and signature), which Service B is sent and then it verifies the token with my new Token User Service.

Q: How many users?
A: 40 services across 8 DBs, so about 300 users. For two months.

Q: How do you know it’s working?
A: There is a daily health check for this service. Manual check of the logs.

Q: What kind of testing have you done before going to production?
A: Unit tests.

Q: How did you provide the zero downtime?
A: Some manual checks to ensure that Service A can talk to Service B.

Q: Any integration tests?
A: My service has integration tests.

Q: How long did it take to develop it?
A: Two months. I designed the new service, and then I talked to my manager, then the architect, then the Cloud Ops team.

Q: How did you come up with this idea? What inspired you?
A: I borrowed this from the cloud platform team.

Q: What if your service goes down?
A: It’s okay because services use the token for one month before renewing it. If a service receives a new deployment, then it’s next connection attempt will fail as it needs a new token, which my service can’t provide as it’s down.

Analysis

Competency asserted: Deliver Results
Job title: Software Development Engineer (SDE II)
Interviewer role: Software Development Manager, Bar Raisers

Vote: 👎

For Deliver Results, the candidate described a token-based authentication service that he claimed eliminated downtime for the product he was working on. The service was used by other microservices to authenticate themselves with each other, which replaced the previous password-based authentication method. The candidate struggled to respond to the follow-up questions on how he knew the service had no down-time, eventually explaining that he would do a few manual checks by checking logs each morning.

His most significant achievement was using a token service for authentication, which he drew the idea from another system in his company. He also didn’t look like someone able to react to the dynamics of a rapidly changing environment swiftly. I cannot imagine him as a coach or leader in his team.

Learnings

I liked the candidate’s example at first – but when diving more in-depth, it’s apparent that he had no experience in designing distributed systems whatsoever. Or even a single service at scale for that matter. The candidate was consistently not able to identify the weakness of the service he had designed.

Claiming that a service has zero downtime without failover, recovery or monitoring is bold, to say the least.

Leave a Reply