If you are working on application migrations or for example in large data centers installation or upgrade projects, quite likely you will need to prepare many documents, such as design and architectural documents.
To simplify and to improve the quality of the output, GenAI and LLMs could be used for both:
- Working with documentation, such as HLDs (High Level Designs), LLDs (Low Level Designs) and MRs (Migration Runbooks). GenAI could be used for creating new documents or summarizing existing documentation for example to add chapters on the existing architecture to the new architecture documentation.
- Working with code, which could be both proprietary code, for example configuration of IP equipment, such as routers, switches and firewalls or working with standard languages such as Terraform (for Infrastructure as Code cases). This approach could be useful when creating new code or when checking existing code for consistency, efficiency, etc.
Potential use cases that could help when working with documentation:
- Ingesting all the design documentation and then asking advanced questions, such as:- Collecting of Source to Target (S2T) mapping information: which source architectural element maps to which target architectural element. This could be used for example to analyze impact of changing an approved architectural component in the ecosystem.- Summary information from all designs: for example to generate information about all application names and their IDs.?
- Generating sections of designs (HLDs and LLDs), even diagrams could probably be tested with advanced image capable models (multi-modal such as Gemini family) or based on the text, since e.g. Draw IO diagrams could be exported fully into XML format and therefore could be generated by GenAI models.
- Checking for internal consistency of design documentation for example:- Between HLD and LLD documents- Between different documents: different design documents for different applications to ensure that no contradictory solutions are offered.?- Between design documents and internal requirements documents to ensure that design documents follow internal requirements?
- Creating unified spell checker and specific style of text, LLMs could be used:- To spell check documents and correct mistakes, change the style of writing to be more official, less official, etc.?- To adjust the text style to have uniform text to one type of document, for example HLDs, LLDs, MRs or similar.- To generate the same structure of all of the design documents, for example starting with ‘Executive Summary’.?
There are many other potential interesting use cases, which could be used to improve large migration programs using new capabilities of Large Language Models (LLMs).
Potential use cases that could help with code could be for example to create landing zone code or to create application migration code or similar. For such use cases, LLMs could also be used. Some use cases of interests could be:
- Checking existing code used for different needs in program, since some programs encourage use of template code (such as Terraform plugins). The existing could could be checked for: - Correctness: if the terraform code is correct- Efficiency: if? it does the things in the right and efficient way- Simplifying the code: making sure it is not overly complicated and verbose- Debugging: in case something does not work LLMs could help debugging?- Explanation: of the code- Documentation: to explain existing code when it is complex to understand and to create documentation for code templates mentioned above
- Writing new code:- Helping to write new modules of Terraform code or creating documentation after a new template has been created - Writing migration code to help migrate an application- Helping to write test cases for an application to see how it works after specific migration steps.?
- Checking existing code against the template guidelines (or guardrails): - Some companies have rules that specify that IaC (Infrastructure as Code) code needs to comply with underlying code templates or documentation
- Help with DevOps and pipelines for infrastructure and the application code.
We have successfully tested some of the use cases mentioned above and results were encouraging to consider rolling out into production to save effort and man hours required in such large programs.