I work for a company that has multiple product groups. Each product group has its own core function and software development that goes along with it. Ultimately however, each group is connected in some way shape or form even though their direct task is different since our business is a very specific industry. Currently each groups' code and functions are basically in a silo. If Group A has a function that corrects data in a meaningful way, and I want to perform that same conversion on my data for some sort of analysis, I have to rewrite the whole function because I don't have access to the other teams original code. This is a waste of time and it is a practice of useless redundancy. So my team is being tasked with creating a "functions repo" that hosts all useful functions across all groups so that anyone can use it via either REST API or download this code as a package (e.g. NuGet for C# or pip for python) and import it.

What is the best way to attack this. Bear in mind, my team primarily operates in Python. Other teams operate in C#, C, Matlab, or FORTRAN. If possible, I would like to avoid rewriting all functions in one standard chosen language. But if need be, that wouldn't be the end of the world. Also, alot of this code is proprietary, so this repo would be hosted on company servers behind firewalls. So no public repositories.

My initial thought was:

  • host all functions in one repo
  • Setup a pipeline that launches different docker containers for each type of function with a REST API.
  • Configure the Docker container so that when I send a Request to
    it, it either responds with a value(s) from the function (given that I fed data to it), or the packaged code that I can then import in my own script and use however I please.

Is this feasible/maintainable or is there a more elegant solution. I can't imagine this type of problem is unique to just us.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.