Skills
-
Fluent in the backend programming language. Preferably in Java and Python.
-
Good knowledge of data structures and algorithms - if methods you write are in traffic request path, you know how to avoid unacceptable time complexity
-
Thorough knowledge of REST Framework like Spring Boot (or Lagom), REST Maturity Levels, good and bad practices of REST
-
Where to use non-REST frameworks like gRPC over Thrift or Protobuf
-
Nuances of TCP, UDP, HTTP, HTTP2, SSL
-
Thorough understanding of designing distributed systems without a single point of failure that self-heal and stay responsive during failures
-
How to stop cascading failures by implementing fallbacks, graceful degradation, back pressure, circuit breaker, request collapsing/caching, adaptive concurrency limits, rate-limiting – Hystrix, Resilience4J
-
Choosing the right data store for the given requirements – Relational, Graph, Object, Document, Columnar, Key-Value. We use Oracle, MySQL, Mongo, Cassandra
-
Usage of mid-tier caches – define the right keys, how to partition them, setting TTLs. We use Redis, Memcache, EHCache, Hazelcast, Aerospike.
-
Load Balancing and Adaptive Routing across nodes
-
Implementing distributed paradigms like tune-able eventual consistency, CQRS, Event sourcing
-
Understanding the implications of asynchronous communication and non-blocking IO
-
Nuances of using different servers – embedded vs standalone, Tomcat, Undertow, Netty, Jetty
-
Designing systems for achieving low latency, low error rate, and high throughput
-
X, Y, Z cubes of scaling – by cloning, sharding, and breaking into microservices. Applying the right trade-offs using CAP (Consistency, Availability and tolerance to network Partition)
-
Compliance to 12-factor app and a solid understanding of different layers in the services stack – Load Balancer, API Gateway, Service Discovery, Central Config Management, Feature toggle, Aggregator Pattern, etc.
-
Understanding of Data Streaming and Messaging frameworks like Apache Spark, Storm, Flink, Kafka, Apache Active MQ, RabbitMQ, JMS. Google Pub-Sub.
-
Experience with Infrastructure as Code (Terraform, Ansible)
-
Build automation / CICD pipeline integration tools (Jenkins)
-
Authentication and role-based authorization frameworks and standards such as OAuth 2, OIDC ,SAML, Single Sign-On, Mobile Device Management, asymmetric Encryption (JWT / JWS and JWE) etc.
-
Upkeep, setup, and creation of content management systems (CMS)
-
The most commonly used server-side template engines like Jinja2 or Jinja, Mako, etc.
-
Building ETL data pipelines
-
Shell scripting in Linux (preferably BASH)
-
ORM frameworks (e.g. SQL Alchemy)
-
performance tuning
-
key management service like alibabacloud kms, huaweicloud kms.
-
Troubleshooting using monitoring tools such as Prometheus, Grafana, Loki, Splunk, etc in complex cloud-based environments.
-
tracing using pinpoint
-
service discovery
-
encryption
Qualities
- You are a champion at Code reviews and Unit/Mock/integration Tests
- You have a strong sense of ownership of what you design and deploy
- You provide strong technical mentorship to team members
- You are an excellent team player
- You continuously learn and improve
- You are certainly NOT an intellectual jerk