{"id":6720,"date":"2020-08-11T22:11:29","date_gmt":"2020-08-11T20:11:29","guid":{"rendered":"https:\/\/www.synthesis.co.za\/?p=6720"},"modified":"2020-08-11T22:11:29","modified_gmt":"2020-08-11T20:11:29","slug":"preparing-your-microsoft-net-service-to-be-hosted-on-the-cloud","status":"publish","type":"post","link":"https:\/\/www.synthesis.co.za\/preparing-your-microsoft-net-service-to-be-hosted-on-the-cloud\/","title":{"rendered":"Preparing your Microsoft .NET service to be hosted on the cloud"},"content":{"rendered":"<p>By Dean Maier, Synthesis Cloud Project Lead<\/p>\n<p><span data-contrast=\"auto\">Whether you<\/span><span data-contrast=\"auto\">\u00a0a<\/span><span data-contrast=\"auto\">re\u00a0<\/span><span data-contrast=\"auto\">already<\/span><span data-contrast=\"auto\">\u00a0underway<\/span><span data-contrast=\"auto\">\u00a0on\u00a0<\/span><span data-contrast=\"auto\">your<\/span><span data-contrast=\"auto\">\u00a0cloud migration journey<\/span><span data-contrast=\"auto\"> and modernising your applications<\/span><span data-contrast=\"auto\">\u00a0or<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">are\u00a0<\/span><span data-contrast=\"auto\">just\u00a0<\/span><span data-contrast=\"auto\">looking to\u00a0<\/span><span data-contrast=\"auto\">run a<\/span><span data-contrast=\"auto\">n existing<\/span><span data-contrast=\"auto\">\u00a0service in the cloud<\/span><span data-contrast=\"auto\">, this guide will assist you <\/span><span data-contrast=\"auto\">with some of the\u00a0<\/span><span data-contrast=\"auto\">checklist items\u00a0<\/span><span data-contrast=\"auto\">you\u00a0<\/span><span data-contrast=\"auto\">should<\/span><span data-contrast=\"auto\">\u00a0consider<\/span><span data-contrast=\"auto\">.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Microsoft has two<\/span><span data-contrast=\"auto\">\u00a0primary<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">frameworks or SDK\u2019s that\u00a0<\/span><span data-contrast=\"auto\">are used for service development and these are namely .<\/span><span data-contrast=\"auto\">NET<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">f<\/span><span data-contrast=\"auto\">ramework and .<\/span><span data-contrast=\"auto\">NET<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">c<\/span><span data-contrast=\"auto\">ore.<\/span><span data-contrast=\"auto\"> You can read more information <\/span><strong><a href=\"https:\/\/dotnet.microsoft.com\/learn\/dotnet\/what-is-dotnet\">here<\/a><\/strong><span data-contrast=\"auto\">.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<h3 aria-level=\"1\"><span data-contrast=\"none\">Legacy<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h3>\n<p><span data-contrast=\"auto\">The .<\/span><span data-contrast=\"auto\">NET<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">f<\/span><span data-contrast=\"auto\">ramework\u00a0<\/span><span data-contrast=\"auto\">version 4.8 is Microsoft\u2019s last version of the .<\/span><span data-contrast=\"auto\">NET<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">framework. Due to the dependency on the .<\/span><span data-contrast=\"auto\">NET<\/span><span data-contrast=\"auto\">\u00a0runtime which<\/span><span data-contrast=\"auto\">\u00a0is only supported by Microsoft Windows operating systems<\/span><span data-contrast=\"auto\">\u00a0and the fact<\/span><span data-contrast=\"auto\">\u00a0that it is no longer under active development<\/span><span data-contrast=\"auto\">\u00a0it would be fair to consider any<\/span><span data-contrast=\"auto\">\u00a0.<\/span><span data-contrast=\"auto\">NET<\/span><span data-contrast=\"auto\">\u00a0framework solutions as legacy<\/span><span data-contrast=\"auto\">.<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">G<\/span><span data-contrast=\"auto\">iven the advent of the .<\/span><span data-contrast=\"auto\">NET<\/span><span data-contrast=\"auto\">\u00a0core platform and the direction\u00a0<\/span><span data-contrast=\"auto\">by Microsoft\u00a0<\/span><span data-contrast=\"auto\">making<\/span><span data-contrast=\"auto\">\u00a0.<\/span><span data-contrast=\"auto\">NET<\/span><span data-contrast=\"auto\">\u00a05\u00a0<\/span><span data-contrast=\"auto\">\u201cthe only\u00a0<\/span><span data-contrast=\"auto\">.<\/span><span data-contrast=\"auto\">NET<\/span><span data-contrast=\"auto\">\u201d<\/span><span data-contrast=\"auto\">,\u00a0<\/span><span data-contrast=\"auto\">you should consider an upgrade rather hastily a<\/span><span data-contrast=\"auto\">s more and more solutions are requiring cross-platform capabilities<\/span><span data-contrast=\"auto\">\u00a0and features\u00a0<\/span><span data-contrast=\"auto\">enabled<\/span><span data-contrast=\"auto\">\u00a0by the newer framework<\/span><span data-contrast=\"auto\">.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">This guide can assist you in your migration efforts. Get more information <\/span><strong><a href=\"https:\/\/docs.microsoft.com\/en-us\/dotnet\/core\/porting\/\">here<\/a><\/strong><span data-contrast=\"auto\">.<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">You can also leverage the <\/span><strong><a href=\"https:\/\/aws.amazon.com\/blogs\/aws\/announcing-the-porting-assistant-for-net\/\">AWS porting assistant<\/a><\/strong><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">which can\u00a0<\/span><span data-contrast=\"auto\">help you analyse<\/span><span data-contrast=\"auto\"> your solution, your dependencies<\/span><span data-contrast=\"auto\">\u00a0and port\u00a0<\/span><span data-contrast=\"auto\">your application for you.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<h3 aria-level=\"1\"><span data-contrast=\"none\">General considerations<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h3>\n<p><span data-contrast=\"auto\">When making the choice to\u00a0<\/span><span data-contrast=\"auto\">deploy your application or service to the cloud the one thing that becomes apparent, or at least I hope, is that the term stateless becomes\u00a0<\/span><span data-contrast=\"auto\">truly relevant.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Stateless<\/span><span data-contrast=\"auto\">\u00a0(as per\u00a0<\/span><strong><a href=\"https:\/\/en.wikipedia.org\/wiki\/Stateless_protocol\">Wikipedia<\/a>)<\/strong><span data-contrast=\"auto\">\u00a0refers to\u00a0<\/span><span data-contrast=\"auto\">no session information\u00a0<\/span><span data-contrast=\"auto\">r<\/span><span data-contrast=\"auto\">etained by the receiver, usually a server<\/span><span data-contrast=\"auto\">. This means that the <\/span><span data-contrast=\"auto\">information you store in memory or on disk c<\/span><span data-contrast=\"auto\">annot be relied on\u00a0<\/span><span data-contrast=\"auto\">and<\/span><span data-contrast=\"auto\">\u00a0should not be relied on.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">You should account for any dependencies you have<\/span><span data-contrast=\"auto\">\u00a0an<\/span><span data-contrast=\"auto\">d<\/span><span data-contrast=\"auto\">\u00a0find alternatives on where to store and access state information such as your data caching,<\/span><span data-contrast=\"auto\">\u00a0application configuration and any files you may need to interact with.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<h3 aria-level=\"1\"><span data-contrast=\"none\">Hosting<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h3>\n<p><span data-contrast=\"auto\">Although it is simple enough to host your application \u201cas-is\u201d on a Microsoft Windows Server in the cloud it does not really serve any benefit apart from simply running in a different location.<\/span><span data-contrast=\"auto\">\u00a0In\u00a0<\/span><span data-contrast=\"auto\">fact,<\/span><span data-contrast=\"auto\">\u00a0it may prove troublesome\u00a0<\/span><span data-contrast=\"auto\">when you start looking at scaling and resiliency.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p>AWS for example provides you with the ability to launch an EC2 instance with a\u00a0wide range\u00a0of supplied AMI\u2019s (Amazon Machine Image) and you can create your own too. They\u00a0provide you access to a\u00a0selection\u00a0of operating systems which are optimized for start-up speed and security\u00a0and even\u00a0have specific versions of software pre-configured.<\/p>\n<p><span data-contrast=\"auto\">You could consider hosting your application in some of the following ways:<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" aria-setsize=\"-1\" data-aria-posinset=\"0\" data-aria-level=\"1\"><span data-contrast=\"auto\">Virtual machine<\/span><span data-contrast=\"auto\">\u00a0using\u00a0<\/span><span data-contrast=\"auto\">the dotnet runtime<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" aria-setsize=\"-1\" data-aria-posinset=\"0\" data-aria-level=\"1\"><span data-contrast=\"auto\">Managed service<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" aria-setsize=\"-1\" data-aria-posinset=\"0\" data-aria-level=\"1\"><span data-contrast=\"auto\">Container<\/span><span data-contrast=\"auto\">\u00a0hosting service<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<\/ul>\n<h3 aria-level=\"1\"><span data-contrast=\"none\">Logging<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h3>\n<p><span data-contrast=\"auto\">One of the immediate things that will need to change is how you go about\u00a0<\/span><span data-contrast=\"auto\">logging in your service. This refers particularly to where the logs are stored.<\/span><span data-contrast=\"auto\">\u00a0As mentioned in the hosting considerations you could simply\u00a0<\/span><span data-contrast=\"auto\">store them on a<\/span><span data-contrast=\"auto\">\u00a0virtual machine but if that instance disappears \u2013 so do your logs.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">AWS, for example, provides you <\/span><span data-contrast=\"auto\">with\u00a0<\/span><span data-contrast=\"auto\">a managed service called CloudWatch, which\u00a0<\/span><span data-contrast=\"auto\">can<\/span><span data-contrast=\"auto\">\u00a0store logs in log groups and specify\u00a0<\/span><span data-contrast=\"auto\">retention periods. Additionally, you can utilise Insights to execute queries against your log files.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Cloud providers will supply you with an SDK that will have an integration with your existing logger, for example, Log4Net<\/span><span data-contrast=\"auto\">\u00a0or\u00a0<\/span><span data-contrast=\"auto\">Serilog, and<\/span><span data-contrast=\"auto\">\u00a0can easily adapt to\u00a0<\/span><span data-contrast=\"auto\">include the cloud providers logging service.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">A guide to integrating your logging with AWS can be found <\/span><strong><a href=\"https:\/\/aws.amazon.com\/blogs\/developer\/logging-with-the-aws-sdk-for-net\/\">here<\/a>.<\/strong><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<h3 aria-level=\"1\"><span data-contrast=\"none\">Configuration<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h3>\n<p><span data-contrast=\"auto\">Provided you are already making use of Microsoft\u2019s .<\/span><span data-contrast=\"auto\">NET<\/span><span data-contrast=\"auto\">\u00a0core platform<\/span><span data-contrast=\"auto\">, you should be making use of a configuration file in the form o<\/span><span data-contrast=\"auto\">f<\/span><span data-contrast=\"auto\">\u00a0json, like\u00a0<\/span><span data-contrast=\"auto\">\u201c<\/span><i><span data-contrast=\"auto\">app<\/span><\/i><i><span data-contrast=\"auto\">setting<\/span><\/i><i><span data-contrast=\"auto\">s<\/span><\/i><i><span data-contrast=\"auto\">.json<\/span><\/i><i><span data-contrast=\"auto\">\u201d<\/span><\/i><span data-contrast=\"auto\">\u00a0or similar that you\u2019ve configured in your application\u2019s\u00a0<\/span><span data-contrast=\"auto\">\u201c<\/span><i><span data-contrast=\"auto\">startup<\/span><\/i><i><span data-contrast=\"auto\">.cs<\/span><\/i><i><span data-contrast=\"auto\">\u201d<\/span><\/i><span data-contrast=\"auto\">\u00a0file.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">When you run applications on the cloud it is considered best practice to have your configuration injected into the\u00a0<\/span><span data-contrast=\"auto\">applications environment variables. This can be enabled by specifying\u00a0<\/span><span data-contrast=\"auto\">\u201c<\/span><span data-contrast=\"auto\">AddEnvironmentVariables<\/span><span data-contrast=\"auto\">\u201d<\/span><span data-contrast=\"auto\"> to your application&#8217;s configuration builder.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Regardless of\u00a0<\/span><span data-contrast=\"auto\">your\u00a0<\/span><span data-contrast=\"auto\">hosting choice, this<\/span><span data-contrast=\"auto\">\u00a0pattern would\u00a0<\/span><span data-contrast=\"auto\">still\u00a0<\/span><span data-contrast=\"auto\">be relevant<\/span><span data-contrast=\"auto\">.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">You may<\/span><span data-contrast=\"auto\">\u00a0also<\/span><span data-contrast=\"auto\">\u00a0have to consider<\/span><span data-contrast=\"auto\">\u00a0secure values that are stored in configuration and making use of a\u00a0<\/span><span data-contrast=\"auto\">secret<\/span><span data-contrast=\"auto\">\u00a0manager provided by your cloud provider.\u00a0<\/span><span data-contrast=\"auto\">AWS provides\u00a0<\/span><span data-contrast=\"auto\">AWS Secrets Manager<\/span><span data-contrast=\"auto\">\u00a0and<\/span><span data-contrast=\"auto\"> an example of implementation can be read about<\/span><span data-contrast=\"auto\">\u00a0<\/span><strong><a href=\"https:\/\/aws.amazon.com\/blogs\/security\/how-to-use-aws-secrets-manager-client-side-caching-in-dotnet\/\">here<\/a>.<\/strong><span data-contrast=\"auto\"> This does however come at an additional cost so for more general-purpose configuration<\/span><span data-contrast=\"auto\">\u00a0storage you can consider\u00a0<\/span><span data-contrast=\"auto\">the AWS SSM parameter store which you can find an example implementation of <\/span><strong><a href=\"https:\/\/aws.amazon.com\/blogs\/developer\/net-core-configuration-provider-for-aws-systems-manager\/\">here<\/a>.\u00a0<\/strong><\/p>\n<h3 aria-level=\"1\"><span data-contrast=\"none\">External dependencies<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h3>\n<p><span data-contrast=\"auto\">Here\u2019s where things start getting a bit interesting.\u00a0<\/span><span data-contrast=\"auto\">Naturally,<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">services<\/span><span data-contrast=\"auto\">\u00a0like database<\/span><span data-contrast=\"auto\">s<\/span><span data-contrast=\"auto\"> and queues, start coming to mind and they<\/span><span data-contrast=\"auto\">\u00a0a<\/span><span data-contrast=\"auto\">re not<\/span><span data-contrast=\"auto\">\u00a0exempt from changing when you migrate your application.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">If\u00a0<\/span><span data-contrast=\"auto\">you are<\/span><span data-contrast=\"auto\">\u00a0making use of a\u00a0<\/span><span data-contrast=\"auto\">database,<\/span><span data-contrast=\"auto\">\u00a0you may need to consider that migration path too.\u00a0<\/span><span data-contrast=\"auto\">Most cloud providers have a managed service for databases such as AWS with their RDS service.<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">Luckily,<\/span><span data-contrast=\"auto\">\u00a0they have migrated thousands of these instances<\/span><span data-contrast=\"auto\">\u00a0already<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">and have made the migration path simple enough, so you will just need to change your connection strings.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Should you have any other dependencies you may have to consider what managed services you can leverage from your cloud provider and how to change about your integration.<\/span><span data-contrast=\"auto\">\u00a0These could include things like managed queues, notification services<\/span><span data-contrast=\"auto\">, caching, and file storage solutions.\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">These will most likely offer integration in the form of an SDK<\/span><span data-contrast=\"auto\"> so provided your integration is not too specialised, it should be simple to switch over.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<h3 aria-level=\"1\"><span data-contrast=\"none\">Licensing<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h3>\n<p><span data-contrast=\"auto\">This may be more of a bespoke topic not\u00a0<\/span><span data-contrast=\"auto\">relevant<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">to your solution<\/span><span data-contrast=\"auto\">\u00a0however if you do make use of licens<\/span><span data-contrast=\"auto\">ing within your software you may need to consider how to go about storing licensing information.\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Some licenses\u00a0<\/span><span data-contrast=\"auto\">additionally require some type of compliance and<\/span><span data-contrast=\"auto\"> AWS, for example, has a managed solution for you to store and monitor licensing\u00a0<\/span><span data-contrast=\"auto\">information and usage.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">More information<\/span><span data-contrast=\"auto\">\u00a0can be found<strong>\u00a0<\/strong><\/span><strong><a href=\"https:\/\/docs.aws.amazon.com\/license-manager\/latest\/userguide\/license-manager.html\">here<\/a>.\u00a0<\/strong><\/p>\n<h3 aria-level=\"1\"><span data-contrast=\"none\">Monitoring<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h3>\n<p><span data-contrast=\"auto\">If<\/span><span data-contrast=\"auto\">\u00a0you were used to\u00a0<\/span><span data-contrast=\"auto\">watching Windows Task Manager or Performance Monitor \u2013 these will most likely not be available for your hosted solution.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Instead,\u00a0<\/span><span data-contrast=\"auto\">consider what metrics are provided by your cloud provider. In AWS, for example, there are metrics for all managed services and similarly, alerting<\/span><span data-contrast=\"auto\">, which can be configured to notify relevant members for things like high resource usage or\u00a0<\/span><span data-contrast=\"auto\">unusual error counts.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<h3 aria-level=\"1\"><span data-contrast=\"none\">High availability and scaling<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h3>\n<p><span data-contrast=\"auto\">One of the most compelling reasons in my opinion to migrate your solution to the cloud is to take advantage of the availability, resilience and scaling opportunities provided to you by utilising the cloud to host your applications.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">In terms of availability, making use of a managed service means your infrastructure is managed<\/span><span data-contrast=\"auto\">\u00a0and<\/span><span data-contrast=\"auto\">\u00a0your cloud provider will make sure it is available as per<\/span><span data-contrast=\"auto\">\u00a0their availability SLA which is usually 99% and higher.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">In terms of resilience, automated failovers can save you headaches down the line\u00a0<\/span><span data-contrast=\"auto\">and can limit the impact of a single point of failure. Provided your application is stateless you should not have any issues resuming from another<\/span><span data-contrast=\"auto\">\u00a0location.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Then in terms of scaling, most managed services have a template to define what types of scaling your application can make use of.\u00a0<\/span><span data-contrast=\"auto\">Typically,<\/span><span data-contrast=\"auto\">\u00a0these work on\u00a0<\/span><span data-contrast=\"auto\">several<\/span><span data-contrast=\"auto\">\u00a0metrics<\/span><span data-contrast=\"auto\">\u00a0and you will have the freedom to either notify someone that scaling should take place or have the service do it for you automatically. Scaling up can help ease the contention on a service or set of services whereas it can also save you money by scaling down services when there has been an observed period of\u00a0<\/span><span data-contrast=\"auto\">limited usage.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Have a look\u00a0<\/span><strong><a href=\"https:\/\/aws.amazon.com\/autoscaling\/features\/\">here<\/a><\/strong><span data-contrast=\"auto\"> at how AWS provides auto-scaling functionality to a number of\u00a0<\/span><span data-contrast=\"auto\">services.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<h3 aria-level=\"1\"><span data-contrast=\"none\">Conclusion<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h3>\n<p><span data-contrast=\"auto\">While this may not be an exhaustive list of considerations you\u2019ll have to make to migrate your application or service to the cloud \u2013 these are certainly some of the biggest ones<\/span><span data-contrast=\"auto\">\u00a0which in some instances can take some time and may require you to make changes to your architecture.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Due to\u00a0<\/span><span data-contrast=\"auto\">cloud providers having migrated thousands of workloads already, the platform and tooling have matured <\/span><span data-contrast=\"auto\">extensively,<\/span><span data-contrast=\"auto\">\u00a0and\u00a0<\/span><span data-contrast=\"auto\">it is<\/span><span data-contrast=\"auto\">\u00a0becoming\u00a0<\/span><span data-contrast=\"auto\">so much easier to make the move.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Synthesis, as an <\/span><span data-contrast=\"auto\">AWS advanced partner, has helped countless customers on their cloud migration journeys and has also built a <\/span><span data-contrast=\"auto\">whole range of cloud-native solutions. This allows us t<\/span><span data-contrast=\"auto\">he unique position to be able to accelerate\u00a0<\/span><span data-contrast=\"auto\">customers in realising great value by adopting cloud.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\"><strong><a href=\"https:\/\/www.synthesis.co.za\/connect\/\">Contact us<\/a><\/strong> to <\/span><span data-contrast=\"auto\">find out more or to see some of our <strong><a href=\"https:\/\/www.synthesis.co.za\/work\/\">customer success stories<\/a><\/strong>.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>By Dean Maier, Synthesis Cloud Project Lead Whether you\u00a0are\u00a0already\u00a0underway\u00a0on\u00a0your\u00a0cloud migration journey and modernising your applications\u00a0or\u00a0are\u00a0just\u00a0looking to\u00a0run an existing\u00a0service in the cloud, this guide will assist you with some of the\u00a0checklist items\u00a0you\u00a0should\u00a0consider.\u00a0 Microsoft has two\u00a0primary\u00a0frameworks or SDK\u2019s that\u00a0are used for service development and these are namely .NET\u00a0framework and .NET\u00a0core. You can read more information here.\u00a0 Legacy\u00a0 [&hellip;]<\/p>\n","protected":false},"author":12,"featured_media":6721,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"episode_type":"","audio_file":"","cover_image":"","cover_image_id":"","duration":"","filesize":"","filesize_raw":"","date_recorded":"","explicit":"","block":"","itunes_episode_number":"","itunes_title":"","itunes_season_number":"","itunes_episode_type":"","footnotes":""},"categories":[34],"tags":[],"ptype":[11],"sectors":[],"class_list":["post-6720","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-conversation","ptype-articles"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.0 (Yoast SEO v27.0) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Preparing your Microsoft .NET service to be hosted on the cloud - Synthesis<\/title>\n<meta name=\"description\" content=\"Preparing your Microsoft .NET service to be hosted on the cloud? This guide will assist you with some of the\u00a0checklist items\u00a0you\u00a0should\u00a0consider.\u00a0\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.synthesis.co.za\/preparing-your-microsoft-net-service-to-be-hosted-on-the-cloud\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Preparing your Microsoft .NET service to be hosted on the cloud\" \/>\n<meta property=\"og:description\" content=\"Preparing your Microsoft .NET service to be hosted on the cloud? This guide will assist you with some of the\u00a0checklist items\u00a0you\u00a0should\u00a0consider.\u00a0\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.synthesis.co.za\/preparing-your-microsoft-net-service-to-be-hosted-on-the-cloud\/\" \/>\n<meta property=\"og:site_name\" content=\"Synthesis\" \/>\n<meta property=\"article:published_time\" content=\"2020-08-11T20:11:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.synthesis.co.za\/wp-content\/uploads\/2020\/08\/pexels-negative-space-169573.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1280\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Synthesis Staff\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Synthesis Staff\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.synthesis.co.za\/preparing-your-microsoft-net-service-to-be-hosted-on-the-cloud\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.synthesis.co.za\/preparing-your-microsoft-net-service-to-be-hosted-on-the-cloud\/\"},\"author\":{\"name\":\"Synthesis Staff\",\"@id\":\"https:\/\/www.synthesis.co.za\/#\/schema\/person\/a1cde004c078942c45be61a61cd6ae2c\"},\"headline\":\"Preparing your Microsoft .NET service to be hosted on the cloud\",\"datePublished\":\"2020-08-11T20:11:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.synthesis.co.za\/preparing-your-microsoft-net-service-to-be-hosted-on-the-cloud\/\"},\"wordCount\":1416,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.synthesis.co.za\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.synthesis.co.za\/preparing-your-microsoft-net-service-to-be-hosted-on-the-cloud\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.synthesis.co.za\/wp-content\/uploads\/2020\/08\/pexels-negative-space-169573.jpg\",\"articleSection\":[\"Conversations\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.synthesis.co.za\/preparing-your-microsoft-net-service-to-be-hosted-on-the-cloud\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.synthesis.co.za\/preparing-your-microsoft-net-service-to-be-hosted-on-the-cloud\/\",\"url\":\"https:\/\/www.synthesis.co.za\/preparing-your-microsoft-net-service-to-be-hosted-on-the-cloud\/\",\"name\":\"Preparing your Microsoft .NET service to be hosted on the cloud - Synthesis\",\"isPartOf\":{\"@id\":\"https:\/\/www.synthesis.co.za\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.synthesis.co.za\/preparing-your-microsoft-net-service-to-be-hosted-on-the-cloud\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.synthesis.co.za\/preparing-your-microsoft-net-service-to-be-hosted-on-the-cloud\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.synthesis.co.za\/wp-content\/uploads\/2020\/08\/pexels-negative-space-169573.jpg\",\"datePublished\":\"2020-08-11T20:11:29+00:00\",\"description\":\"Preparing your Microsoft .NET service to be hosted on the cloud? This guide will assist you with some of the\u00a0checklist items\u00a0you\u00a0should\u00a0consider.\u00a0\",\"breadcrumb\":{\"@id\":\"https:\/\/www.synthesis.co.za\/preparing-your-microsoft-net-service-to-be-hosted-on-the-cloud\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.synthesis.co.za\/preparing-your-microsoft-net-service-to-be-hosted-on-the-cloud\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.synthesis.co.za\/preparing-your-microsoft-net-service-to-be-hosted-on-the-cloud\/#primaryimage\",\"url\":\"https:\/\/www.synthesis.co.za\/wp-content\/uploads\/2020\/08\/pexels-negative-space-169573.jpg\",\"contentUrl\":\"https:\/\/www.synthesis.co.za\/wp-content\/uploads\/2020\/08\/pexels-negative-space-169573.jpg\",\"width\":1920,\"height\":1280,\"caption\":\"Preparing your Microsoft .NET service to be hosted on the cloud\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.synthesis.co.za\/preparing-your-microsoft-net-service-to-be-hosted-on-the-cloud\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.synthesis.co.za\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Preparing your Microsoft .NET service to be hosted on the cloud\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.synthesis.co.za\/#website\",\"url\":\"https:\/\/www.synthesis.co.za\/\",\"name\":\"Synthesis\",\"description\":\"Specialized Software Development\",\"publisher\":{\"@id\":\"https:\/\/www.synthesis.co.za\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.synthesis.co.za\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.synthesis.co.za\/#organization\",\"name\":\"Synthesis, a Leading Software Development Company\",\"url\":\"https:\/\/www.synthesis.co.za\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.synthesis.co.za\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.synthesis.co.za\/wp-content\/uploads\/2016\/03\/Synthesis-logo.jpg\",\"contentUrl\":\"https:\/\/www.synthesis.co.za\/wp-content\/uploads\/2016\/03\/Synthesis-logo.jpg\",\"width\":1036,\"height\":220,\"caption\":\"Synthesis, a Leading Software Development Company\"},\"image\":{\"@id\":\"https:\/\/www.synthesis.co.za\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.synthesis.co.za\/#\/schema\/person\/a1cde004c078942c45be61a61cd6ae2c\",\"name\":\"Synthesis Staff\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.synthesis.co.za\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.synthesis.co.za\/wp-content\/uploads\/2020\/03\/cropped-favicon-1-96x96.png\",\"contentUrl\":\"https:\/\/www.synthesis.co.za\/wp-content\/uploads\/2020\/03\/cropped-favicon-1-96x96.png\",\"caption\":\"Synthesis Staff\"},\"url\":\"https:\/\/www.synthesis.co.za\/author\/staff\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Preparing your Microsoft .NET service to be hosted on the cloud - Synthesis","description":"Preparing your Microsoft .NET service to be hosted on the cloud? This guide will assist you with some of the\u00a0checklist items\u00a0you\u00a0should\u00a0consider.\u00a0","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.synthesis.co.za\/preparing-your-microsoft-net-service-to-be-hosted-on-the-cloud\/","og_locale":"en_US","og_type":"article","og_title":"Preparing your Microsoft .NET service to be hosted on the cloud","og_description":"Preparing your Microsoft .NET service to be hosted on the cloud? This guide will assist you with some of the\u00a0checklist items\u00a0you\u00a0should\u00a0consider.\u00a0","og_url":"https:\/\/www.synthesis.co.za\/preparing-your-microsoft-net-service-to-be-hosted-on-the-cloud\/","og_site_name":"Synthesis","article_published_time":"2020-08-11T20:11:29+00:00","og_image":[{"width":1920,"height":1280,"url":"https:\/\/www.synthesis.co.za\/wp-content\/uploads\/2020\/08\/pexels-negative-space-169573.jpg","type":"image\/jpeg"}],"author":"Synthesis Staff","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Synthesis Staff","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.synthesis.co.za\/preparing-your-microsoft-net-service-to-be-hosted-on-the-cloud\/#article","isPartOf":{"@id":"https:\/\/www.synthesis.co.za\/preparing-your-microsoft-net-service-to-be-hosted-on-the-cloud\/"},"author":{"name":"Synthesis Staff","@id":"https:\/\/www.synthesis.co.za\/#\/schema\/person\/a1cde004c078942c45be61a61cd6ae2c"},"headline":"Preparing your Microsoft .NET service to be hosted on the cloud","datePublished":"2020-08-11T20:11:29+00:00","mainEntityOfPage":{"@id":"https:\/\/www.synthesis.co.za\/preparing-your-microsoft-net-service-to-be-hosted-on-the-cloud\/"},"wordCount":1416,"commentCount":0,"publisher":{"@id":"https:\/\/www.synthesis.co.za\/#organization"},"image":{"@id":"https:\/\/www.synthesis.co.za\/preparing-your-microsoft-net-service-to-be-hosted-on-the-cloud\/#primaryimage"},"thumbnailUrl":"https:\/\/www.synthesis.co.za\/wp-content\/uploads\/2020\/08\/pexels-negative-space-169573.jpg","articleSection":["Conversations"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.synthesis.co.za\/preparing-your-microsoft-net-service-to-be-hosted-on-the-cloud\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.synthesis.co.za\/preparing-your-microsoft-net-service-to-be-hosted-on-the-cloud\/","url":"https:\/\/www.synthesis.co.za\/preparing-your-microsoft-net-service-to-be-hosted-on-the-cloud\/","name":"Preparing your Microsoft .NET service to be hosted on the cloud - Synthesis","isPartOf":{"@id":"https:\/\/www.synthesis.co.za\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.synthesis.co.za\/preparing-your-microsoft-net-service-to-be-hosted-on-the-cloud\/#primaryimage"},"image":{"@id":"https:\/\/www.synthesis.co.za\/preparing-your-microsoft-net-service-to-be-hosted-on-the-cloud\/#primaryimage"},"thumbnailUrl":"https:\/\/www.synthesis.co.za\/wp-content\/uploads\/2020\/08\/pexels-negative-space-169573.jpg","datePublished":"2020-08-11T20:11:29+00:00","description":"Preparing your Microsoft .NET service to be hosted on the cloud? This guide will assist you with some of the\u00a0checklist items\u00a0you\u00a0should\u00a0consider.\u00a0","breadcrumb":{"@id":"https:\/\/www.synthesis.co.za\/preparing-your-microsoft-net-service-to-be-hosted-on-the-cloud\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.synthesis.co.za\/preparing-your-microsoft-net-service-to-be-hosted-on-the-cloud\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.synthesis.co.za\/preparing-your-microsoft-net-service-to-be-hosted-on-the-cloud\/#primaryimage","url":"https:\/\/www.synthesis.co.za\/wp-content\/uploads\/2020\/08\/pexels-negative-space-169573.jpg","contentUrl":"https:\/\/www.synthesis.co.za\/wp-content\/uploads\/2020\/08\/pexels-negative-space-169573.jpg","width":1920,"height":1280,"caption":"Preparing your Microsoft .NET service to be hosted on the cloud"},{"@type":"BreadcrumbList","@id":"https:\/\/www.synthesis.co.za\/preparing-your-microsoft-net-service-to-be-hosted-on-the-cloud\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.synthesis.co.za\/"},{"@type":"ListItem","position":2,"name":"Preparing your Microsoft .NET service to be hosted on the cloud"}]},{"@type":"WebSite","@id":"https:\/\/www.synthesis.co.za\/#website","url":"https:\/\/www.synthesis.co.za\/","name":"Synthesis","description":"Specialized Software Development","publisher":{"@id":"https:\/\/www.synthesis.co.za\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.synthesis.co.za\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.synthesis.co.za\/#organization","name":"Synthesis, a Leading Software Development Company","url":"https:\/\/www.synthesis.co.za\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.synthesis.co.za\/#\/schema\/logo\/image\/","url":"https:\/\/www.synthesis.co.za\/wp-content\/uploads\/2016\/03\/Synthesis-logo.jpg","contentUrl":"https:\/\/www.synthesis.co.za\/wp-content\/uploads\/2016\/03\/Synthesis-logo.jpg","width":1036,"height":220,"caption":"Synthesis, a Leading Software Development Company"},"image":{"@id":"https:\/\/www.synthesis.co.za\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.synthesis.co.za\/#\/schema\/person\/a1cde004c078942c45be61a61cd6ae2c","name":"Synthesis Staff","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.synthesis.co.za\/#\/schema\/person\/image\/","url":"https:\/\/www.synthesis.co.za\/wp-content\/uploads\/2020\/03\/cropped-favicon-1-96x96.png","contentUrl":"https:\/\/www.synthesis.co.za\/wp-content\/uploads\/2020\/03\/cropped-favicon-1-96x96.png","caption":"Synthesis Staff"},"url":"https:\/\/www.synthesis.co.za\/author\/staff\/"}]}},"_links":{"self":[{"href":"https:\/\/www.synthesis.co.za\/wp-json\/wp\/v2\/posts\/6720","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.synthesis.co.za\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.synthesis.co.za\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.synthesis.co.za\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/www.synthesis.co.za\/wp-json\/wp\/v2\/comments?post=6720"}],"version-history":[{"count":0,"href":"https:\/\/www.synthesis.co.za\/wp-json\/wp\/v2\/posts\/6720\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.synthesis.co.za\/wp-json\/wp\/v2\/media\/6721"}],"wp:attachment":[{"href":"https:\/\/www.synthesis.co.za\/wp-json\/wp\/v2\/media?parent=6720"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.synthesis.co.za\/wp-json\/wp\/v2\/categories?post=6720"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.synthesis.co.za\/wp-json\/wp\/v2\/tags?post=6720"},{"taxonomy":"ptype","embeddable":true,"href":"https:\/\/www.synthesis.co.za\/wp-json\/wp\/v2\/ptype?post=6720"},{"taxonomy":"sectors","embeddable":true,"href":"https:\/\/www.synthesis.co.za\/wp-json\/wp\/v2\/sectors?post=6720"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}