(Adding engineering-all@ for Wikimedia engineers' awareness.)

Good work on this Amir, James, Gergo, Reedy, DBAs, and all the others not
mentioned.

Cleaning up tech debt to provide a stable base for future code hygiene is
important, hard, and sometimes thankless work.

Greg

On Thu, May 27, 2021 at 4:33 PM Amir Sarabadani <ladsgr...@gmail.com> wrote:

> Hello,
> If you missed the previous updates, there's the first
> <https://lists.wikimedia.org/hyperkitty/list/wikitech-l@lists.wikimedia.org/message/HSVI63YWZP7OOXB46WP2NRH2RWNPYA2I/>and
> the second
> <https://lists.wikimedia.org/hyperkitty/list/wikitech-l@lists.wikimedia.org/message/TMFVXO46J57BWQHQGZXXICXNY35EVOMI/>one.
> This is the last one I'm sending but in a good way.
>
> We now finished migrating all 57 core tables to abstract schema. Now 
> tables.sql
> is empty for MySQL
> <https://gerrit.wikimedia.org/g/mediawiki/core/+/c60ccf4e6d4932dddc2efd72a8abf6e56243f086/maintenance/tables.sql>.
> We will soon remove the tables.sql files and links to them.
>
> We have also cleaned more than hundreds of old schema change files.
> <https://phabricator.wikimedia.org/T272199> That enabled us to actually
> look for unused sql files and drop tens of unused ones that have not been
> used since 2002 <https://gerrit.wikimedia.org/r/c/mediawiki/core/+/668552>,
> 2004 <https://gerrit.wikimedia.org/r/c/mediawiki/core/+/668761>, or 2005
> <https://gerrit.wikimedia.org/r/c/mediawiki/core/+/670176> (and much
> more) and they got lost in the sheer number of our sql patch files.
>
> The next update is exciting for me. With abstraction in place, we can now
> have a proper tracking of drifts between schema in paper and our production
> (This is a follow up from a major incident in 2018). Now we have
> https://drift-tracker.toolforge.org/ that keeps track of these drifts.
> Our schema has been around for more than twenty years and we have hundreds
> of database hosts, making sure everything is using the right database
> schema (and stays correct) is impossible manually and we have been finding
> and fixing these drifts since 2018, see this comment onwards
> <https://phabricator.wikimedia.org/T104459#4314828>.). Of course more
> work in improving the tracker is welcome (here's the list
> <https://phabricator.wikimedia.org/project/board/5350/>)
>
> If you want to enjoy the benefits of abstract schema [1] in extension(s)
> you or your team maintains, Please abstract the schema of your extension.
> There's a long list of WMF deployed extensions that are not using
> abstract schema <https://phabricator.wikimedia.org/T261912> and some even
> already have a patch that only needs reviewing. Once that's done, we can
> add that to drift tracking and have a more comprehensive list of potential
> issues. If you need help with the abstraction work, just ping me.
>
> This also helped us resolve several long-standing tickets like T104459
> <https://phabricator.wikimedia.org/T104459> (5.5 years old), T62962
> <https://phabricator.wikimedia.org/T62962> (7 years old), and T42626
> <https://phabricator.wikimedia.org/T42626> (soon reaching its ninth
> birthday) and will help us to address even more tech debt in future.
>
> There is more to be done, improving the abstract schema *change* system,
> finding a home of schema documentation, improving the drift tracker and
> making it more automated, so much more. But the biggest chunk of work is
> now finally done.
>
> I really would like to thank Ammarpad for great work on abstracting the
> tables and handling all sorts of edge cases, James Forrester and Tgr for
> their reviews which without them this wouldn't be possible and Sam Reed who
> wrote a script to speed up migration
> <https://github.com/Ladsgroup/db-analyzor-tools/blob/master/db_abstractor.py>.
> This was a team work to its core.
>
> [1] In more details, by abstracting you will have automated checks for
> dirfits of the schema of extension(s) you maintain and production. You will
> have Postgres support for free. Also, you can have automated documentation
> generation, ability to test the schema itself, and have better consistency
> of your data types (like one datatype for timestamps).
>
> Until the next adventure.
> --
> Amir (he/him)
>
> _______________________________________________
> Wikitech-l mailing list -- wikitech-l@lists.wikimedia.org
> To unsubscribe send an email to wikitech-l-le...@lists.wikimedia.org
> https://lists.wikimedia.org/postorius/lists/wikitech-l.lists.wikimedia.org/



-- 
| Greg Grossmeier              GPG: B2FA 27B1 F7EB D327 6B8E |
| Dir. Engineering Productivity     A18D 1138 8E47 FAC8 1C7D |
_______________________________________________
Wikitech-l mailing list -- wikitech-l@lists.wikimedia.org
To unsubscribe send an email to wikitech-l-le...@lists.wikimedia.org
https://lists.wikimedia.org/postorius/lists/wikitech-l.lists.wikimedia.org/

Reply via email to