{"id":3431,"date":"2021-08-20T13:59:00","date_gmt":"2021-08-20T11:59:00","guid":{"rendered":"https:\/\/blog.besharp.it\/?p=3431"},"modified":"2021-08-20T13:19:04","modified_gmt":"2021-08-20T11:19:04","slug":"deploying-a-wordpress-site-to-the-aws-cloud-like-a-pro-our-guide-for-painless-maintenance-using-docker-and-aws-managed-services","status":"publish","type":"post","link":"https:\/\/blog.besharp.it\/deploying-a-wordpress-site-to-the-aws-cloud-like-a-pro-our-guide-for-painless-maintenance-using-docker-and-aws-managed-services\/","title":{"rendered":"Deploying a WordPress site to the AWS Cloud like a pro: our guide for painless maintenance using Docker and AWS Managed Services."},"content":{"rendered":"\n

WordPress is the easiest way to manage and create content. Its flexibility is loved by authors: with a couple of plugins you can do everything from hosting a cute kittens photo gallery to hosting an e-commerce site.<\/p>\n\n\n\n

Let\u2019s face it: seen from the IT guy point of view, WordPress is a technical nightmare. When someone has to deal with it the horror begins: scalability is challenging, installation isn\u2019t scripted and a LAMP stack is not always easy to maintain.<\/p>\n\n\n\n

In this article we\u2019ll give you some technical hints and examples to ease your relationship with WordPress in a cloud environment based on AWS. <\/p>\n\n\n\n

We’ll try to use as many AWS managed services as we can to be able to offload boring and dangerous tasks.<\/p>\n\n\n\n

Database<\/h2>\n\n\n\n

We want our database to be highly available and scalable, so obviously we\u2019ll use Amazon Aurora with MySQL compatibility. <\/p>\n\n\n\n

With Amazon Aurora we don\u2019t have to worry about space usage because the underlying storage can automatically scale when needed. In addition, with point-in-time recovery you can restore your data with the granularity of a second.<\/p>\n\n\n\n

You can also use Multi-AZ configurations with read replicas that can take over in case of an Availability Zone failure. <\/p>\n\n\n\n

AWS will automatically assign a reader endpoint and a writer endpoint (with a DNS record) when you create an Amazon Aurora Cluster instance. <\/p>\n\n\n\n

In case of a failure (or maintenance) the read replica will be automatically promoted to become the writer and the endpoint will be automatically updated: simply configure your wp-config.php file with the writer endpoint and AWS will do all the work for you.
If you know that your database will be stressed by a lot of read traffic you can add up to 15 read replicas to a single Aurora Cluster but you\u2019ll need to tell WordPress to use them. In this case, you can take advantage of the hyperdb plugin<\/a>: with hyperdb you can define as many database read replicas as you want in your configuration file and use them. The example configuration file<\/a> is well documented; here\u2019s an example configuration:<\/p>\n\n\n\n

wpdb->add_database(array(\n 'host'\t=> mydbcluster.cluster-123456789012.us-east-1.rds.amazonaws.com,\n 'user'\t=> DB_USER,\n 'password'\t=> DB_PASSWORD,\n  'name' \t=> DB_NAME,\n));\n\n$wpdb->add_database(array(\n 'host' \t=> mydbcluster.cluster-ro-123456789012.us-east-1.rds.amazonaws.com,\n 'user'\t=> DB_USER,\n 'password'\t=> DB_PASSWORD,\n 'name'\t=> DB_NAME,\n 'write'\t=> 0,\n 'read'\t=> 1,\n));<\/code><\/pre>\n\n\n\n

Instead, if you are starting small and don\u2019t know how and when your site will need to scale, Aurora Serverless is the best choice for you: it has the ability to scale the compute layer and to \u201cpause\u201d if your website isn\u2019t accessed, so you can also save money !<\/p>\n\n\n\n

Compute<\/h2>\n\n\n\n

We want to take advantage of the elasticity of the cloud, so using EC2 and Autoscaling Groups can be the natural choice.Also, we can go further and use Docker containers with an ECS Fargate cluster with a little bit of application refactoring. <\/p>\n\n\n\n

Using containers reduces maintenance activities for operating systems updates and makes scaling more easily. As a bonus point we can also automate the deployment workflow using pipelines.<\/p>\n\n\n\n

WordPress offers a pre-built container image with a vanilla installation<\/a>: <\/p>\n\n\n\n

We can start building our docker image adapting it to our needs, installing plugins automatically using wp-cli: in our example we\u2019ll install the wordpress-seo plugin (we\u2019ll assume that you already have a working wp-config.php file)<\/p>\n\n\n\n

Please note that this is only an example. We suggest you to tailor and customize your Dockerfile to your needs: we always recommend that you know what software you are using and running, especially in containerized solutions.<\/p>\n\n\n\n

Example Dockerfile:<\/p>\n\n\n\n

FROM wordpress\n\nCOPY wp-config.php \/usr\/src\/wordpress\/\n\nRUN  curl -O https:\/\/raw.githubusercontent.com\/wp-cli\/builds\/gh-pages\/phar\/wp-cli.phar && chmod +x wp-cli.phar && mv wp-cli.phar \/usr\/local\/bin\/wp\n\nWORKDIR \/usr\/src\/wordpress\/\n\nRUN wp --allow-root core update\nRUN wp --allow-root plugin install wordpress-seo  \n\nWORKDIR \/var\/www\/html<\/code><\/pre>\n\n\n\n

We just automated our installation, making it maintainable and ready for testing in different environments. <\/p>\n\n\n\n

Simply run:<\/p>\n\n\n\n

docker build . -t myawesomewordpresscontainer <\/code><\/pre>\n\n\n\n

and you\u2019ll have a ready-to-go container to deploy. You can use a docker-compose.yml file to test on your local pc, run it in a development environment or in production using ECS.<\/p>\n\n\n\n

Creating a serverless execution environment on AWS ECS is pretty simple: <\/p>\n\n\n\n

On AWS Console go to ECS -> Create Cluster, select \u201cNetworking Only\u201d to define a Fargate Cluster:<\/p>\n\n\n\n

\"Cluster<\/figure>\n\n\n\n

<\/p>\n\n\n\n

Give it a name:<\/p>\n\n\n\n

\"Cluster<\/figure>\n\n\n\n

<\/p>\n\n\n\n

Create a Docker Repository for the image: Select \u201cAmazon ECR -> Repositories<\/p>\n\n\n\n

\"Repository\"<\/figure>\n\n\n\n

<\/p>\n\n\n\n

Click on the just created ECR repository by clicking on \u201cView push commands\u201d you\u2019ll get ready-to-go instructions to build and upload the container to the repository:<\/p>\n\n\n\n

\"Wordpress<\/figure>\n\n\n\n

<\/p>\n\n\n\n

Once image upload is done you can add a task definition for the ECS cluster,.he task definition will define how to run our container in the ECS cluster:<\/p>\n\n\n\n

Click on \u201ctask-definitions\u201d on the AWS Console sidebar and select \u201cCreate new Task Definition\u201d:<\/p>\n\n\n\n

\"\"<\/figure>\n\n\n\n

<\/p>\n\n\n\n

Select Fargate as launch type<\/p>\n\n\n\n

\"Launch<\/figure>\n\n\n\n

<\/p>\n\n\n\n

Give the task definition a name and assign the resources. <\/p>\n\n\n\n

Since we are developing a small demo we\u2019ll select 0.25 CPU units and 0.5 GB of memory (keep also in mind that it is always better to scale horizontally having multiple small containers).<\/p>\n\n\n\n

Click on \u201cAdd Container\u201d to add the container definition, so we can specify everything for the Docker execution Environment<\/p>\n\n\n\n

\"Container\"<\/figure>\n\n\n\n

<\/p>\n\n\n\n

Don\u2019t forget to map port 80! <\/p>\n\n\n\n

After you create the task definition you can define a service to run the container:<\/p>\n\n\n\n

\"Deploy\"<\/figure>\n\n\n\n

<\/p>\n\n\n\n

As you can see we already choose to deploy 2 tasks, so our wordpress installation will be highly available and load balanced.<\/p>\n\n\n\n

We\u2019re not showing you security groups and balancing options because they are common configuration tasks on AWS (need help ? Write to us!).<\/p>\n\n\n\n

Storage<\/strong><\/p>\n\n\n\n

Since our container is stateless (by definition, here you can find more the details about differences between stateful and stateless services:  https:\/\/blog.besharp.it\/stateful-vs-stateless-the-good-the-bad-and-the-ugly\/<\/a>) we need to solve a final problem: static assets and persistence.<\/p>\n\n\n\n

Our service of choice is Amazon EFS, a shared and distributed file system. We can store assets that are in the wp-content\/uploads directory by simply adding an EFS filesystem it in the task definition and giving it a name:<\/p>\n\n\n\n

\"Storage\"<\/figure>\n\n\n\n

<\/p>\n\n\n\n

<\/p>\n\n\n\n

And then define the mount in the container:<\/p>\n\n\n\n

\"Storage<\/figure>\n\n\n\n

<\/p>\n\n\n\n

Don\u2019t forget to add an AWS Backup job for the EFS share! <\/p>\n\n\n\n

There are also WordPress plugins that can take advantage of S3. Since we want to keep our demo installation simple, we won\u2019t use them for this specific case, but you can, consider them while planning your installation.<\/p>\n\n\n\n

Caching <\/strong><\/p>\n\n\n\n

We will not show these steps but, as a general rule of thumb, you can reduce compute cost and make the site more responsive for users by adding a CloudFront distribution in front of your load balancer. <\/p>\n\n\n\n

You can also use an application cache for user sessions and database query offloading using Amazon Elasticache for Redis with the redis-cache WordPress plugin.<\/p>\n\n\n\n

Deploying a new Elasticache for Redis cluster is a matter of minutes: search for Elasticache on the AWS console and then click \u201cCreate\u201d:<\/p>\n\n\n\n

\"ElastiCache<\/figure>\n\n\n\n

In the \u201cAdvanced Redis settings\u201d create a new subnet group and select at least two subnets in different availability zones to keep the cluster private and highly available, select or create a security group to grant wordpress containers access to the Elasticache cluster.<\/p>\n\n\n\n

\"Redis<\/figure>\n\n\n\n

<\/p>\n\n\n\n

Click on \u201cCreate\u201d and your cluster will be ready in a couple of minutes. <\/p>\n\n\n\n

Add in the Dockerfile this line to install  the redis-cache plugin<\/p>\n\n\n\n

RUN --allow-root plugin install redis-cache<\/code><\/pre>\n\n\n\n

And then configure it to cache user sessions using the the primary endpoint shown in cluster details:<\/p>\n\n\n\n

\"Endpoint\"<\/figure>\n\n\n\n

<\/p>\n\n\n\n

WAF<\/strong><\/p>\n\n\n\n

To prevent and mitigate attacks and common vulnerabilities consider enabling AWS WAF and configure it to use Managed Rules for AWS Firewall ruleset. You can enable AWS WAF on the Application Load Balancer or on the CloudFront Distribution (if you choose to use it)<\/p>\n\n\n\n

Maintaining containers: ThePipelines! <\/strong><\/p>\n\n\n\n

Our choice for automating our WordPress container maintenance  is the CodeBuild\/CodePipeline duo.<\/p>\n\n\n\n

simply follow these steps to deploy pipelines: https:\/\/blog.besharp.it\/aws-fargate-services-deployment-with-continuous-delivery-pipeline\/<\/a>  <\/p>\n\n\n\n

You can also rely on a blu\/green deployment strategy. Here’s how to do it: https:\/\/blog.besharp.it\/how-to-setup-a-continuous-deployment-pipeline-on-aws-for-ecs-blue-green-deployments\/<\/a> <\/p>\n\n\n\n

Starting a containerized WordPress deployment from scratch isn\u2019t hard: with the right managed services you\u2019ll offload a lot of tasks like maintaining high availability, keeping the focus on maintaining content.<\/p>\n\n\n\n

What’s your experience with containerized WordPress deployment? Have you ever faced any challenges? <\/p>\n\n\n\n

That\u2019s all for today. <\/p>\n\n\n\n

Keep reading and see you in 14 days on #Proud2beCloud!<\/p>\n","protected":false},"excerpt":{"rendered":"

WordPress is the easiest way to manage and create content. Its flexibility is loved by authors: with a couple of […]<\/p>\n","protected":false},"author":13,"featured_media":3464,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[242],"tags":[376,374,531],"yoast_head":"\nDeploying a WordPress site to the AWS Cloud like a pro: our guide for painless maintenance using Docker and AWS Managed Services. - Proud2beCloud Blog<\/title>\n<meta name=\"description\" content=\"In this article we\u2019ll give you some pro tips to ease WordPress maintenance in a cloud environment using containers and managed services.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.besharp.it\/deploying-a-wordpress-site-to-the-aws-cloud-like-a-pro-our-guide-for-painless-maintenance-using-docker-and-aws-managed-services\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Deploying a WordPress site to the AWS Cloud like a pro: our guide for painless maintenance using Docker and AWS Managed Services.\" \/>\n<meta property=\"og:description\" content=\"In this article, we\u2019ll give you some pro tips to ease WordPress maintenance in a cloud environment using containers and managed services.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.besharp.it\/deploying-a-wordpress-site-to-the-aws-cloud-like-a-pro-our-guide-for-painless-maintenance-using-docker-and-aws-managed-services\/\" \/>\n<meta property=\"og:site_name\" content=\"Proud2beCloud Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-08-20T11:59:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-08-20T11:19:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.besharp.it\/wp-content\/uploads\/2021\/08\/Deploying-a-WordPress-site-to-the-AWS-social-eng.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Damiano Giorgi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Deploying a WordPress site to the AWS Cloud like a pro: our guide for painless maintenance using Docker and AWS Managed Services.\" \/>\n<meta name=\"twitter:description\" content=\"In this article, we\u2019ll give you some pro tips to ease WordPress maintenance in a cloud environment using containers and managed services.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/blog.besharp.it\/wp-content\/uploads\/2021\/08\/Deploying-a-WordPress-site-to-the-AWS-social-eng.jpg\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Damiano Giorgi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.besharp.it\/deploying-a-wordpress-site-to-the-aws-cloud-like-a-pro-our-guide-for-painless-maintenance-using-docker-and-aws-managed-services\/\",\"url\":\"https:\/\/blog.besharp.it\/deploying-a-wordpress-site-to-the-aws-cloud-like-a-pro-our-guide-for-painless-maintenance-using-docker-and-aws-managed-services\/\",\"name\":\"Deploying a WordPress site to the AWS Cloud like a pro: our guide for painless maintenance using Docker and AWS Managed Services. - Proud2beCloud Blog\",\"isPartOf\":{\"@id\":\"https:\/\/blog.besharp.it\/#website\"},\"datePublished\":\"2021-08-20T11:59:00+00:00\",\"dateModified\":\"2021-08-20T11:19:04+00:00\",\"author\":{\"@id\":\"https:\/\/blog.besharp.it\/#\/schema\/person\/a9195473e4a658b45cb12d3df3fdf293\"},\"description\":\"In this article we\u2019ll give you some pro tips to ease WordPress maintenance in a cloud environment using containers and managed services.\",\"breadcrumb\":{\"@id\":\"https:\/\/blog.besharp.it\/deploying-a-wordpress-site-to-the-aws-cloud-like-a-pro-our-guide-for-painless-maintenance-using-docker-and-aws-managed-services\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.besharp.it\/deploying-a-wordpress-site-to-the-aws-cloud-like-a-pro-our-guide-for-painless-maintenance-using-docker-and-aws-managed-services\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.besharp.it\/deploying-a-wordpress-site-to-the-aws-cloud-like-a-pro-our-guide-for-painless-maintenance-using-docker-and-aws-managed-services\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.besharp.it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Deploying a WordPress site to the AWS Cloud like a pro: our guide for painless maintenance using Docker and AWS Managed Services.\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.besharp.it\/#website\",\"url\":\"https:\/\/blog.besharp.it\/\",\"name\":\"Proud2beCloud Blog\",\"description\":\"il blog di beSharp\",\"alternateName\":\"Proud2beCloud Blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.besharp.it\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.besharp.it\/#\/schema\/person\/a9195473e4a658b45cb12d3df3fdf293\",\"name\":\"Damiano Giorgi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.besharp.it\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9a20b8c97250d4fb49857192f7e4bedf?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9a20b8c97250d4fb49857192f7e4bedf?s=96&d=mm&r=g\",\"caption\":\"Damiano Giorgi\"},\"description\":\"Ex sistemista on-prem, pigro e incline all'automazione di task noiosi. Alla ricerca costante di novit\u00e0 tecnologiche e quindi passato al cloud per trovare nuovi stimoli. L'unico hardware a cui mi dedico ora \u00e8 quello del mio basso; se non mi trovate in ufficio o in sala prove provate al pub o in qualche aeroporto!\",\"url\":\"https:\/\/blog.besharp.it\/author\/damiano-giorgi\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Deploying a WordPress site to the AWS Cloud like a pro: our guide for painless maintenance using Docker and AWS Managed Services. - Proud2beCloud Blog","description":"In this article we\u2019ll give you some pro tips to ease WordPress maintenance in a cloud environment using containers and managed services.","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:\/\/blog.besharp.it\/deploying-a-wordpress-site-to-the-aws-cloud-like-a-pro-our-guide-for-painless-maintenance-using-docker-and-aws-managed-services\/","og_locale":"en_US","og_type":"article","og_title":"Deploying a WordPress site to the AWS Cloud like a pro: our guide for painless maintenance using Docker and AWS Managed Services.","og_description":"In this article, we\u2019ll give you some pro tips to ease WordPress maintenance in a cloud environment using containers and managed services.","og_url":"https:\/\/blog.besharp.it\/deploying-a-wordpress-site-to-the-aws-cloud-like-a-pro-our-guide-for-painless-maintenance-using-docker-and-aws-managed-services\/","og_site_name":"Proud2beCloud Blog","article_published_time":"2021-08-20T11:59:00+00:00","article_modified_time":"2021-08-20T11:19:04+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/blog.besharp.it\/wp-content\/uploads\/2021\/08\/Deploying-a-WordPress-site-to-the-AWS-social-eng.jpg","type":"image\/jpeg"}],"author":"Damiano Giorgi","twitter_card":"summary_large_image","twitter_title":"Deploying a WordPress site to the AWS Cloud like a pro: our guide for painless maintenance using Docker and AWS Managed Services.","twitter_description":"In this article, we\u2019ll give you some pro tips to ease WordPress maintenance in a cloud environment using containers and managed services.","twitter_image":"https:\/\/blog.besharp.it\/wp-content\/uploads\/2021\/08\/Deploying-a-WordPress-site-to-the-AWS-social-eng.jpg","twitter_misc":{"Written by":"Damiano Giorgi","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.besharp.it\/deploying-a-wordpress-site-to-the-aws-cloud-like-a-pro-our-guide-for-painless-maintenance-using-docker-and-aws-managed-services\/","url":"https:\/\/blog.besharp.it\/deploying-a-wordpress-site-to-the-aws-cloud-like-a-pro-our-guide-for-painless-maintenance-using-docker-and-aws-managed-services\/","name":"Deploying a WordPress site to the AWS Cloud like a pro: our guide for painless maintenance using Docker and AWS Managed Services. - Proud2beCloud Blog","isPartOf":{"@id":"https:\/\/blog.besharp.it\/#website"},"datePublished":"2021-08-20T11:59:00+00:00","dateModified":"2021-08-20T11:19:04+00:00","author":{"@id":"https:\/\/blog.besharp.it\/#\/schema\/person\/a9195473e4a658b45cb12d3df3fdf293"},"description":"In this article we\u2019ll give you some pro tips to ease WordPress maintenance in a cloud environment using containers and managed services.","breadcrumb":{"@id":"https:\/\/blog.besharp.it\/deploying-a-wordpress-site-to-the-aws-cloud-like-a-pro-our-guide-for-painless-maintenance-using-docker-and-aws-managed-services\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.besharp.it\/deploying-a-wordpress-site-to-the-aws-cloud-like-a-pro-our-guide-for-painless-maintenance-using-docker-and-aws-managed-services\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.besharp.it\/deploying-a-wordpress-site-to-the-aws-cloud-like-a-pro-our-guide-for-painless-maintenance-using-docker-and-aws-managed-services\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.besharp.it\/"},{"@type":"ListItem","position":2,"name":"Deploying a WordPress site to the AWS Cloud like a pro: our guide for painless maintenance using Docker and AWS Managed Services."}]},{"@type":"WebSite","@id":"https:\/\/blog.besharp.it\/#website","url":"https:\/\/blog.besharp.it\/","name":"Proud2beCloud Blog","description":"il blog di beSharp","alternateName":"Proud2beCloud Blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.besharp.it\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.besharp.it\/#\/schema\/person\/a9195473e4a658b45cb12d3df3fdf293","name":"Damiano Giorgi","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.besharp.it\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/9a20b8c97250d4fb49857192f7e4bedf?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9a20b8c97250d4fb49857192f7e4bedf?s=96&d=mm&r=g","caption":"Damiano Giorgi"},"description":"Ex sistemista on-prem, pigro e incline all'automazione di task noiosi. Alla ricerca costante di novit\u00e0 tecnologiche e quindi passato al cloud per trovare nuovi stimoli. L'unico hardware a cui mi dedico ora \u00e8 quello del mio basso; se non mi trovate in ufficio o in sala prove provate al pub o in qualche aeroporto!","url":"https:\/\/blog.besharp.it\/author\/damiano-giorgi\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.besharp.it\/wp-json\/wp\/v2\/posts\/3431"}],"collection":[{"href":"https:\/\/blog.besharp.it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.besharp.it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.besharp.it\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.besharp.it\/wp-json\/wp\/v2\/comments?post=3431"}],"version-history":[{"count":0,"href":"https:\/\/blog.besharp.it\/wp-json\/wp\/v2\/posts\/3431\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.besharp.it\/wp-json\/wp\/v2\/media\/3464"}],"wp:attachment":[{"href":"https:\/\/blog.besharp.it\/wp-json\/wp\/v2\/media?parent=3431"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.besharp.it\/wp-json\/wp\/v2\/categories?post=3431"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.besharp.it\/wp-json\/wp\/v2\/tags?post=3431"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}