Fullstack developer, DevOps, system administrator with 4 years of experience working in fintech blockchain oriented company and 3 years of experience working in IoT oriented startup.
- Various fullstack projects consisting of backend services, admin GUIs, user GUIs and cross-platform mobile applications, involving blockchain, cash machines, IoT systems, B2B and B2C solutions.
- Designed and maintaining production, staging, QA, development infrastructure on AWS, Hetzner and on-prem.
- Worked on improving developer experience and observability in development and production systems.
- Designed many CI/CD pipelines for various fullstack applications including backend services, web frontends, Android and iOS applications using GitLab CI.
- Rich experience in troubleshooting and performance optimizations of CI pipelines as well as production applications and databases.
- Migrated few products between different clouds and VPS
- Various services processing crypto real-time market data.
- Various services working with blockchain data, transactions and wallets.
- Integrated 13+ crypto exchanges APIs for market data and trading via REST API, WebSocket and FIX protocol.
- Maintaining crypto exchange backend services, REST API and WebSocket API.
- Worked on optimization and monitoring of performance of production MySQL and PostgreSQL clusters.
- Connected multiple suites of infrastructure together with private networking solutions.
- Designed effective CI/CD system with 1k+ jobs per day.
- Implemented and maintaining backend for IoT embedded systems.
- Worked with Google, Amazon, Netatmo, OpenWeather APIs on smart home projects.
- Worked with Stripe, Google Play Billing and Apple App Store payments and recurring subscriptions APIs.
- Various CLI tools, libraries, system programming.
- Various Prometheus exporters, monitoring scripts.
- Designed many effective Grafana dashboards.
- Practising on-call duty for infrastructure and applications.
- Done multiple workshops, teaching people DevOps, backend, frontend.
More can be found on my GitHub profile: https://github.com/ulexxander
Also check my GitHub Gists: https://gist.github.com/ulexxander
When developing projects I follow following principles and techniques:
- Using Linux as a development machine as well as deployment target, if possible.
- Focusing on correctness, reliability, maintainability and performance of the code as well as infrastructure.
- Preferring Infrastructure-as-Code when building infrastructure and deploying applications.
- Always searching for simplest and most efficient solutions for the problem.
- Detecting and avoiding over-complicated solutions.
- Testing the code, often applying TDD techniques.
- Constant refactoring of the code in order to improve it.
- Continuous Integration that performs code validation, runs tests and builds Docker images and other artifacts.
- Continuous Deployment that spins up staging environment for testing.
- Using logging and metrics to observe running software.
- Heavily relying on Docker and Kubernetes when deploying software.
- Always using the right tool for the job.
- Focusing on productivity and developer experience.
- Versioning software and infrastructure.
- Avoiding introducing breaking changes.
- Avoiding causing downtime or developer's workflow interruptions.
- Documenting projects with Markdown containing development and deployment instructions, useful information.
- Merge/Pull requests and code review on projects with multiple people.
- Occasional contributions in Open Source.
- Participating in architecture design on the new projects.
- Sharing knowledge with colleagues, consulting and teaching people.
- Organizing my work using GitLab issues, Obsidian and Discord. Heavily relying on TODO lists.
Software development
- Go
- TypeScript / JavaScript
- Node.js (Express, Nest.JS)
- React
- React Native (Android and IOS)
- PHP
- Microservices, monoliths and other design patterns
- Shell scripting, knowledge of curl, grep, sed, jq, tar and so on...
- Git
- Merge/Pull requests and code review
- Unit tests, integration tests, E2E tests based on Docker or Cypress
- Linting and formatting of code
- Code generation
- Profiling code with pprof, xdebug, Chrome and Firefox DevTools
Soft skills
- Effective communication and team work
- Task management, tickets / issues systems
- Project management
- Teaching people and explaining things
- Pair programming
- Code review
- Project documentation
DevOps
- AWS: EC2, VPC, IAM, S3, RDS, EKS, Lambda, Route53, CloudWatch, CloudTrail, ECR
- Terraform
- Kubernetes managed and self hosted
- Helm
- GitLab CI/CD
- Experience implementing staging, QA and development environments
- Hetzner, Contabo, Linode VPS
- Docker and Docker Compose
- CloudFlare
- HashiCorp Vault
- Firebase
- Google Play, App Store
Infrastructure
- Linux deep knowledge, primarily Ubuntu and Debian
- Experience with various VM's and bare metal Linux hosts
- Traefik, NGINX and their Kubernetes and Docker integrations
- KVM and QEMU
- Raspberry Pi
- MikroTik
- WireGuard
- Tailscale and self-hosted Headscale
APIs and messaging protocols
- Experience designing API's
- REST API's
- WebSocket API's
- Webhooks
- NATS
- MQTT
- OAuth 2.0 and OpenID Connect
- OpenAPI / Swagger
- GraphQL
- GRPC
- Advanced auth techniques: RBAC, requests signing
- Integrating external APIs
Databases
- PostgreSQL
- MySQL
- SQLite3
- Database schema migrations
- etcd
- Redis
- MongoDB
Security
- Keycloak
- Multi-factor authentication
- SSH and remote desktops
- ACME and Let's Encrypt
- JWT
- ECDSA, RSA based authentication implementations
- Bitwarden
Observability
- Grafana, dashboards and alerting
- Prometheus and various exporters
- Grafana Loki
- FluentBit
- ElasticSearch based logging stacks: Kibana, Graylog
- InfluxDB based metrics stack: StatsD, Telegraf
- Instrumenting applications with structured logging and metrics