Rewrite in 45 Days, the End

Rewrite in 45 Days, the End

Did you ever wonder what happened to our Rewrite in 45 Days ? Did we ever meet our goal of rewriting this legacy project in 45 days ? Read to the end and you'll find out.

My last update was from Jul 15, 2022, and the following weeks it was just more of the same. Implementing more middleware components, copying legacy code and making it work on our new platform and al this while dealing with some Mac M1 incapabilities (I mean incompatibilities :-)) Making all the legacy code work on the new platform was a tedious and time consuming effort spearheaded by my team. It took much more time than we anticipated. Turns out, you know what you know, but the problem lies with the unknown unknowns, or as you call it: you don't know that you don't know.

The chassis was built in no time, containing a Dockerfile, Heck-Chart and CI/CD pipeline based on Jenkins. Defining the endpoints and reqiring of the legacy code, that is where things started to stagnate. Early on we identified one of the major contributing factors to the slow progression of the project: Lack of documentation and lack of existing tests. Not only in the main project, but in all integrated company thirdparty libraries as well. We always had to refer back to the old system and debug it to find how things work. Certain modules took us days to find the finer parts so we can integrate them. Days !

My main takeaway is: Redesigning and rewriting a single module usualy takes more time then expected. I should have added 30% more time to begin with to compensate for the unknown unknows.

Lack of testing and documentation is a well known problem in legacy systems. Doumentation is being written in the beginning and then no one really cares about it anymore. This is why I implement, including in this project, an approach of treating documentation as code. We wrote a README and a SETUP document, which underwent the same process of code review as any other piece of code. If anything in the system changed which affected the documentation it was changed within the same pull request as the code. Simple enough. Of course there are some more MD files in there, but I do not have to tell all my secrets in one single post.

So now, on day 54 of the rewrite I can proudly say, we are live in production!

So what do we have now ? A new modern REST application based on fastapi which is more scalable and ready for the client's demands. We use more modern tools such as python-poetry and OmegaConf. We use the black formatter and pylint, all integrated in the CI/CD pipeline. We have a nice and new helm chart using secrects and running on ArgoCD to production. I am very proud of the outcome.

I want to thank my team who has endured me for this whole time: Yaniv Ben Zvi , Moshe Elhadad and Gil Ronen , any of which one has done vastly more on this project than me, but don't tell them that ;-). You are the best!

要查看或添加评论,请登录

Yoav Nordmann的更多文章

  • Rewrite in 45 Days, third Week

    Rewrite in 45 Days, third Week

    The third week of our endeavour to rewrite an old legacy django rest app with fastapi. This is in continuation of last…

  • Rewrite in 45 Days, Second Week

    Rewrite in 45 Days, Second Week

    Last week I published an article on how my team and I are rewriting an older Django rest project to a new fastAPI…

  • Rewrite in 45 Days, First Week

    Rewrite in 45 Days, First Week

    My team and I received a mandate to rewrite an older Django rest project to a new fastAPI project. We said we can do it…

    4 条评论

社区洞察

其他会员也浏览了