Changes

Use template header/footer
Line 1: Line 1: −
<!-- NAV -->
+
{{OCIO_GCEA_Header}}
{| class="FCK__ShowTableBorders" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px; background-color: #3C6D9E" width="100%" align="center"
  −
|-
  −
|-
  −
| style="border-right: white 1px ridge; padding-right: 0px; padding-left: 0px; padding-bottom: 2px; padding-top: 2px; text-align: center; font-family: (Cooper black); font-size: 13pt" width="6%" | '''[[GC_Enterprise_Architecture|<span style="color: snow">'''Home'''</span>]]'''
     −
| style="border-right: white 1px ridge; padding-right: 0px; padding-left: 0px; padding-bottom: 2px; padding-top: 2px; text-align: center; font-family: (Cooper black); font-size: 13pt" width="11%" | '''[[Government_of_Canada_Architectural_Standards|<span style="color: Snow">'''EA standards'''</span>]]'''
  −
  −
| style="border-right: white 1px ridge; padding-right: 0px; padding-left: 0px; padding-bottom: 2px; padding-top: 2px; text-align: center; font-family: (Cooper black); font-size: 13pt" width="13%" | '''[[Past_Endorsed_Architectural_Decisions|<span style="color: Snow">'''EARB Endorsements'''</span>]] '''
  −
  −
| style="border-right: white 1px ridge; padding-right: 0px; padding-left: 0px; padding-bottom: 2px; padding-top: 2px; text-align: center; font-family: (Cooper black); font-size: 13pt" width="11%" | '''[[Enterprise_Architecture_Artifacts|<span style="color: Snow">'''EA Artifacts'''</span>]] '''
  −
  −
| style="border-right: white 1px ridge; padding-right: 0px; padding-left: 0px; padding-bottom: 2px; padding-top: 2px; text-align: center; font-family: (Cooper black); font-size: 13pt" width="12%" | '''[[Architecture_Discussions|<span style="color: Snow">'''Working Groups'''</span>]] '''
  −
  −
| style="border-right: white 1px ridge; padding-right: 0px; padding-left: 0px; padding-bottom: 2px; padding-top: 2px; text-align: center; font-family: (Cooper black); font-size: 13pt" width="11%" | '''[[GC EARB|<span style="color: Snow">'''GC EARB'''</span>]] '''
  −
  −
| style="border-right: white 1px ridge; padding-right: 0px; padding-left: 0px; padding-bottom: 2px; padding-top: 2px; text-align: center; font-family: (Cooper black); font-size: 13pt" width="9%" | '''[[Monitoring_Architectural_Implementation|<span style="color: Snow">'''Other References'''</span>]] '''
  −
  −
|}
  −
  −
<!-- NAV end -->
   
'''<u>Translation to follow</u>'''<!-- Columns -->
 
'''<u>Translation to follow</u>'''<!-- Columns -->
 
{| width="100%" cellpadding="10"  
 
{| width="100%" cellpadding="10"  
Line 36: Line 17:     
=3. Application Architecture=
 
=3. Application Architecture=
<br>
+
Application Architecture consists of the interaction of applications with each other and with users. It focuses less on internal mechanics and specific programming and more on overall design on how data is consumed and created by the system. It views the interactions between applications, databases, middleware to ensure scalability, reliability, availability and manageability.
This is a definition for GC Application Enterprise Architecture
      
==Use Open Standards and Solutions by Default==
 
==Use Open Standards and Solutions by Default==
Line 60: Line 40:  
** Major benefits can occur not just from publishing the Software, but in developing Guidance the quality of software increases, while publishing Lessons Learned, White Papers and any other technical documentation can assist others in the future by providing templates and baselines.
 
** Major benefits can occur not just from publishing the Software, but in developing Guidance the quality of software increases, while publishing Lessons Learned, White Papers and any other technical documentation can assist others in the future by providing templates and baselines.
 
** For assistance in how to do this, you can view the[https://github.com/canada-ca/open-source-logiciel-libre/blob/master/en/guides/publishing-open-source-code.md TBS Guidance on Open Source Publishing]
 
** For assistance in how to do this, you can view the[https://github.com/canada-ca/open-source-logiciel-libre/blob/master/en/guides/publishing-open-source-code.md TBS Guidance on Open Source Publishing]
 +
** Setting up shared teams for common problems where Developers from multiple departments can produce better solutions. Virtual Teams using open tools can enable rapid development in absence of collocation.
 
* '''All open source code must be released under an appropriate open source software license'''
 
* '''All open source code must be released under an appropriate open source software license'''
 
** It is important to ensure that the License chosen for OSS protects the rights of Government of Canada and Public Servants while enabling the use and re-use of software. Guidance can be found [https://github.com/canada-ca/open-source-logiciel-libre/blob/master/en/guides/publishing-open-source-code.md#select-open-source-software-licence here].
 
** It is important to ensure that the License chosen for OSS protects the rights of Government of Canada and Public Servants while enabling the use and re-use of software. Guidance can be found [https://github.com/canada-ca/open-source-logiciel-libre/blob/master/en/guides/publishing-open-source-code.md#select-open-source-software-licence here].
 
* '''Expose public data to implement Open Data and Open Information initiatives'''
 
* '''Expose public data to implement Open Data and Open Information initiatives'''
 
** Scientific Innovation can occur from exposing Data to interested members of the activists, researchers, students and the public at large.  
 
** Scientific Innovation can occur from exposing Data to interested members of the activists, researchers, students and the public at large.  
 +
** Define Metadata for your application early in both English and French to support your release to https://open.canada.ca/en/open-data
 
** Development following the [https://www.canada.ca/en/government/system/digital-government/modern-emerging-technologies/government-canada-standards-apis.html Government of Canada Standards on APIs] can allow rapid uptake into Open Data feeds.
 
** Development following the [https://www.canada.ca/en/government/system/digital-government/modern-emerging-technologies/government-canada-standards-apis.html Government of Canada Standards on APIs] can allow rapid uptake into Open Data feeds.
    
==Maximize Reuse==
 
==Maximize Reuse==
* Leverage and reuse existing solutions, components, and processes
+
* '''Leverage and reuse existing solutions, components, and processes'''
* Select enterprise and cluster solutions over department-specific solutions
+
** The use of Open Source software can ensure that other Departments reuse components developed, and vice versa.
* Achieve simplification by minimizing duplication of components and adhering to relevant standards
+
** 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])
* Inform the GC EARB about departmental investments and innovations
+
** Opening up Communication with other Departments to identify if they've already developed a solution can enable further reuse.
* Share code publicly when appropriate, and when not, share within the Government of Canada
+
* '''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
+
* '''Expose all functionality as services'''
* Use microservices built around business capabilities. Scope each service to a single purpose
+
** 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.
* 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)]
+
** Follow the 'eat your own dogfood' mantra - in that all functionality should be a service that you consume.
* Run applications in containers
+
* '''Use microservices built around business capabilities. Scope each service to a single purpose'''
* 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
+
** 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.
 +
 
 +
{{OCIO_GCEA_Footer}}
2,055

edits