Changes

3,532 bytes removed ,  11:51, 9 July 2020
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.