• 27/11/2022
  • Homesmartjp
  • 1223 Pohledy

Jak Slack modernizoval svou mobilní aplikaci a udělal z ní plnou Swift na iOS

Odkaz na originál (datum zveřejnění: 15. 1. 2022)

Slack dokázal modernizovat své aplikace pro iOS a Android a přijmout nové designové trendy. To mimo jiné umožňuje kompletní přechod na Swift pro iOS.

Když se inženýři Slacku rozhodli předělat své aplikace pro iOS a Android, museli čelit realitě dvou kódových základen starých několik let. Jeho kódová základna se organicky rozrostla a postupem času nahromadila značný technický dluh. Poté, co jsme opustili myšlenku úplného přepsání a opětovného použití kódu napříč platformami, rozhodli jsme se provést kompletní refaktoring.

K dosažení tohoto výsledku si tým stanovil tři různé cíle. Patří mezi ně stabilizace kódové základny za účelem odstranění technického dluhu, modularizace aplikací do samostatných komponent a modernizace úsilí v oblasti designu a technologického zásobníku.

Jak Slack je mobilní aplikace modernizoval a plně přešel Swift na iOS

Stabilizace byla prvním krokem. Například na iOS jsme zbytek aplikace, která byla stále napsaná v Objective-C, přepsali ve Swiftu. Podle inženýrů Slacku koexistence kódu Swift a Objective-C ve stejném projektu zpomaluje kompilaci a ovlivňuje výkon. Požadavky na interoperabilitu však zabránily přijetí nových funkcí jazyka Swift.

Kromě toho jsme museli přepsat kód, který přímo přistupoval k Core Data, abychom mohli používat náš vlastní framework persistence založený na Core Data. To zlepšuje výkon a stabilitu. Podobně byly všechny síťové operace přepsány tak, aby využívaly propojovací rámec.

V Androidu byla většina práce zaměřena na rozdělení několika monolitů používaných pro síťový a databázový přístup. Ten přijímá SQLDelight a migruje všechny existující dotazy SQLite. Kromě toho tým Slack přijal vzor úložiště. To usnadňuje zlepšení výkonu podporou chytřejšího ukládání do mezipaměti.

Klíčovým prvkem stabilizační fáze bylo sledování pokroku pomocí jasných metrik spojených s každým z výše uvedených cílů. Například pro sledování přechodu z Objective-C na Swift tým použil skript k počítání počtu zbývajících souborů Objective-C. Také počítání zastaralých názvů tříd a názvů metod mi pomohlo zjistit zbytek cesty k mému cíli.

Jak již bylo zmíněno dříve, cílem modularizace je získat mnoho komponent ze dvou existujících monolitů. Toto úsilí omezilo vzájemné závislosti a doby sestavení, které rostly spolu s kódovou základnou. Velkým přínosem však byla schopnost jednotlivých týmů pracovat nezávisleji.

Inženýři společnosti Slack poskytli mnohem více pozadí a podrobností o fázi stabilizace projektu, než lze shrnout zde. Nenechte si tedy ujít původní příspěvek pro celý obrázek.

O autorovi

Sergio De Simone

Více méně