|
| 1 | +# Services |
| 2 | + |
| 3 | +I'm Artur Shiriev, the maintainer of modern-python. Besides the open-source work, I help teams |
| 4 | +with their Python backends: auditing a codebase, setting up observability and CI, modernizing |
| 5 | +services, and leading the engineering side for a while. |
| 6 | + |
| 7 | +The libraries stay free and MIT-licensed whether or not you hire me. You don't have to use them |
| 8 | +either. When one fits, it saves time; when it doesn't, I work with what your team already runs. |
| 9 | + |
| 10 | +## Engineering health audit { #audit } |
| 11 | + |
| 12 | +For teams that inherited a codebase, are about to grow one, or keep fighting the same incidents. |
| 13 | + |
| 14 | +I look at: |
| 15 | + |
| 16 | +- recent outages and incidents, what caused them, and which ones keep coming back |
| 17 | +- the defect backlog and the error tracker (Sentry, GlitchTip): which bugs matter and which can be |
| 18 | + closed |
| 19 | +- logs, traces and metrics: what is collected, what is noise, and what is missing |
| 20 | +- tech debt: outdated Python and packages, known vulnerabilities, test coverage, tests built on |
| 21 | + mocks, missing linters and type checks |
| 22 | +- CI, the release process, and how a change reaches production |
| 23 | +- the architecture diagrams, and whether they still match the code |
| 24 | + |
| 25 | +You get a written report with findings ranked by impact and effort, a plan for the first fixes, |
| 26 | +and a call to go through it with your team. The audit doesn't change your code; fixes are a |
| 27 | +separate piece of work. |
| 28 | + |
| 29 | +## Implementation sprints { #sprints } |
| 30 | + |
| 31 | +Short, fixed-scope work that ends in merged pull requests in your repositories. Typical sprints: |
| 32 | + |
| 33 | +- Observability. Structured logs, traces, metrics and error tracking in FastAPI, Litestar or |
| 34 | + FastStream services, usually with [`lite-bootstrap`](https://github.com/modern-python/lite-bootstrap), |
| 35 | + plus Grafana and Prometheus dashboards. |
| 36 | +- Quality gates. A `justfile` whose lint and test tasks run the same way locally and in CI, with |
| 37 | + ruff, ty, coverage and dependency checks, along the lines of the org's own [standard](standard.md). |
| 38 | +- A harness for coding agents. `AGENTS.md`, skills, CLI and MCP access to your error tracker, logs |
| 39 | + and metrics, and the hooks and CI checks that hold agent-written changes to the same bar as |
| 40 | + everyone else's. |
| 41 | +- Modernization. Upgrading Python and dependencies, and introducing |
| 42 | + [`modern-di`](https://github.com/modern-python/modern-di) for dependency injection, |
| 43 | + [`httpware`](https://github.com/modern-python/httpware) for typed, resilient HTTP clients, or |
| 44 | + [`faststream-outbox`](https://github.com/modern-python/faststream-outbox) for reliable event |
| 45 | + publishing. |
| 46 | +- Release process. Change requests, end-to-end tests built from test cases, and release scope |
| 47 | + collected automatically with [`release-scope`](https://github.com/modern-python/release-scope) |
| 48 | + and [`semvertag`](https://github.com/modern-python/semvertag). |
| 49 | +- Architecture as code. A [LikeC4](https://likec4.dev) model of the current system, kept in the |
| 50 | + repo next to the code. |
| 51 | + |
| 52 | +## Fractional tech lead { #tech-lead } |
| 53 | + |
| 54 | +For teams without a tech lead, or between two. I join part-time and run the whole loop: |
| 55 | + |
| 56 | +- one-on-ones with each engineer about what slows them down and what they want to work on |
| 57 | +- regular outage and incident reviews that turn into prioritized follow-up tasks |
| 58 | +- grooming the defect and tech-debt backlog |
| 59 | +- the audit and sprints above, scheduled alongside product work |
| 60 | + |
| 61 | +## Library support { #support } |
| 62 | + |
| 63 | +For companies that run modern-python libraries in production: help with upgrades and migrations |
| 64 | +(for example from `that-depends` or `dependency-injector` to `modern-di`), a review of how the |
| 65 | +libraries are wired into your services, and help when an incident involves one of them. |
| 66 | + |
| 67 | +## Get in touch { #contact } |
| 68 | + |
| 69 | +Email [lesnik512@gmail.com](mailto:lesnik512@gmail.com) with a few lines about your team, your |
| 70 | +stack, and what you'd like fixed. I'll reply with questions or a proposal for scope and timing. |
0 commit comments