# resources:diagrams:projects:moe:xtierlink:Home # * [[../|(UP)]] {{indexmenu>.#2|nsort tsort}} ### VPN ### * Advantages: * More or less existing skillsets * Considerations: * Adds a dependency on a vendor service (Data Factory) * Ongoing maintenance can be the consumer's development team. * Disadvantages: either breaking changes, or paralysis. * Extends the current poor value practice of reaching directly into other systems databases, bypassing system logic, albeit via HTTPS. * Introducing unanticipated bugs when data is written directly to databases. * Leads to duplication of logic with the consumer system to attempt to mitigate the above risks. !includeurl http://skysigal.com/_media/resources/configuration/plantuml/minimalist.txt frame Azure { frame "App Services" as XAppServices { component "Application Server\n(Consumer)" as XAS } frame "Corporate Premise" as LegacyPremise { frame "DMZ Network" as DMZ { note as N0 #yellow not used end note } frame "Corporate LAN Network" as LAN { database "DB" as PremDb } } XAS -DOWN(0- PremDb : 1433 over VPN ### HAPI + DATA FACTORY * Advantages: * ETL is a well known development pattern. * Service is already built. * Considerations: * Requires ongoing Maintenance by a different team than the consumer's development team. * Disadvantages: * May lead to poor optimisation of cross platform traffic, adding data costs * Security is minimal, provided by: * firewall rules restricting traffic whitelisted Data Factory clients. * database service accounts (synced using Azure Connect). * Monitoring is general in nature, rather than system/use specific. * RAD development patterns lead to tight coupling by bypassing the creating of DTOs and version API contracts -- leading to either breaking changes, or paralysis. * Extends the current poor value practice of reaching directly into other systems databases, bypassing system logic, albeit via HTTPS. * Introducing unanticipated bugs when data is written directly to databases. * Leads to duplication of logic within DataFactory to attempt to mitigate the above risks. !includeurl http://skysigal.com/_media/resources/configuration/plantuml/minimalist.txt frame "Azure" as Azure { frame "X Subscription" as XSubscription { frame "App Services" as XAppServices { component "Application Server\n(Consumer)" as XAS } } frame "H Subsciption" as HSubscription { frame "Storage Services" as HStorageServices { component "Storage Account" as HStorageAccount { artifact "Container" as HContainer } } frame "App Services" as HAppServices { component "Application Server" as HAPI } frame "Database Services" as HSqlServerServices { component "Database Server" as HDBS { artifact "Database" as HAzureDB } } frame "Data Factory Services" as DataFactoryServices { component "Data Factory" as HDF } HAPI -RIGHT(0- HContainer: HTTPS HAPI -RIGHT(0- HAzureDB : 1433 HAPI -DOWN(0- HDF : HTTPS } XAS -DOWN(0- HAPI : HTTPS } frame "Corporate Premise" as LegacyPremise { frame "DMZ Network" as DMZ { component "Proxy Server" as ProxyPresentationServer { component "Data Factory\nIntegration Runtime" as IntegrationRuntime } } frame "Corporate LAN Network" as LAN { database "DB" as PremDb } IntegrationRuntime -(0- PremDb : 1433\n(firewalled) } HDF -(0- IntegrationRuntime : HTTPS\n(firewalled) ### HAPI + CUSTOM SERVER * Advantages: * Optimises data usage compared to direct access over VPN. * Ensures development quality required to better maintain security is not spread over multiple teams dabling with Data Factory, with varying results. * Considerations: * API Service can be a shared service, or per solution as required. * Note: if installed as a modular shared service, Accreditation costs can be optimized. * Can integrate with Data Factory if that becomes necessary. * Does not require Data Factory to continue functioning. * Requires ongoing Maintenance by a different team than the consumer's development team. * Disadvantages: * Requires more development effort than Data Factory development. * Requires installation of a Proxy and Service on Prem. !includeurl http://skysigal.com/_media/resources/configuration/plantuml/minimalist.txt frame "Azure" as Azure { frame "X Subscription" as XSubscription { frame "App Services" as XAppServices { component "Application Server\n(Consumer)" as XAS } } frame "HAPI Subscription" as HSubscription { frame "Storage Services" as HStorageServices { component "Storage Account" as HStorageAccount { artifact "Container" as HContainer } } frame "App Services" as HAppServices { component "Application Server" as HAPI } frame "Database Services" as HSqlServerServices { component "Database Server" as HDBS { artifact "Database" as HAzureDB } } HAPI -RIGHT(0- HContainer : HTTPS HAPI -RIGHT(0- HAzureDB : 1433 } XAS -DOWN(0- HAPI : HTTPS } frame "Corporate Premise" as LegacyPremise { frame "DMZ Network" as DMZ { component "Proxy Server" as ProxyPresentationServer } frame "Corporate LAN Network" as LAN { component "Application Server" as AppServer database "DB" as PremDb } ProxyPresentationServer -DOWN(0- AppServer : HTTPS\n(firewalled) AppServer -RIGHT- PremDb : 1433 } HAPI -(0- ProxyPresentationServer : HTTPS\n(firewalled)