Line 30: |
Line 30: |
| | | |
| ==Maximize Reuse== | | ==Maximize Reuse== |
− | * '''Leverage and reuse existing solutions, components, and processes''' | + | ** |
− | ** The use of Open Source software can ensure that other Departments reuse components developed, and vice versa. | |
− | ** SaaS, PaaS and IaaS solutions can leverage sharing of configurations when no code is involved such as the GC Accelerators ([https://github.com/canada-ca/accelerators_accelerateurs-azure AWS], [https://github.com/canada-ca/accelerators_accelerateurs-aws Amazon])
| |
− | ** Opening up Communication with other Departments to identify if they've already developed a solution can enable further reuse.
| |
− | * '''Select enterprise and cluster solutions over department-specific solutions'''
| |
− | ** Focus on solutions that enable sharing with other Departments, do not focus just on individual mandates.
| |
− | ** Costs can be setup to be shared across multiple departments, agencies etc...
| |
− | * '''Achieve simplification by minimizing duplication of components and adhering to relevant standards'''
| |
− | ** Focus on Separation of Concern by the development of Microservices, and use and reuse of APIs.
| |
− | ** Consume APIs from the [https://api.canada.ca/en/homepage Government of Canada API Store] if it exists, if it does not add it to the API store.
| |
− | ** Follow the [https://www.canada.ca/en/government/system/digital-government/modern-emerging-technologies/government-canada-standards-apis.html Government of Canada Standards on APIs]
| |
− | * '''Inform the GC EARB about departmental investments and innovations'''
| |
− | ** Communicate with the GC-EARB Team early and frequently, sharing innovations and lessons learned so we can assistance in broadcasting them to others.
| |
− | * '''Share code publicly when appropriate, and when not, share within the Government of Canada'''
| |
− | ** Code should be shared in Public Repositories as described [https://github.com/canada-ca/open-source-logiciel-libre/blob/master/en/guides/publishing-open-source-code.md#select-source-code-repository here].
| |
− | ** When not able to, instead Code should be shared on [https://gccode.ssc-spc.gc.ca/ GCCode].
| |
| | | |
| ==Enable Interoperability== | | ==Enable Interoperability== |
− | * '''Expose all functionality as services''' | + | ** |
− | ** Do not hide services under assumptions that someone would not find value in a service - often innovation can be bred from exposed services beyond it's original plan. | |
− | ** Follow the 'eat your own dogfood' mantra - in that all functionality should be a service that you consume.
| |
− | * '''Use microservices built around business capabilities. Scope each service to a single purpose'''
| |
− | ** Focus on smallest unit of purpose, and developing a single function.
| |
− | * '''Run each IT service in its own process and have it communicate with other services through a well-defined interface, such as a HTTPS-based [https://www.canada.ca/en/government/publicservice/modernizing/government-canada-standards-apis.html application programming interface (API)]à'''
| |
− | ** Ensure that services are accessible via common methodologies, and follow the [https://www.canada.ca/en/government/system/digital-government/modern-emerging-technologies/government-canada-standards-apis.html Government of Canada Standards on APIs]
| |
− | * '''Run applications in containers'''
| |
− | ** Ensure containers contain a single application, and build the smallest image possible.
| |
− | ** Ensure containers are properly versioned and tagged.
| |
− | * '''Leverage the [[gccollab:groups/profile/1238235/engovernment-of-canada-digital-exchangefru00c9change-numu00e9rique-du-gouvernement-du-canada|GC Digital Exchange Platform]] for components such as the API Store, Messaging, and the GC Service Bus'''
| |
− | ** Ensure APIs are discoverable on the API Store.
| |