{"id":4441,"date":"2019-07-28T11:30:59","date_gmt":"2019-07-28T10:30:59","guid":{"rendered":"https:\/\/www.discoverpassenger.com\/?p=4441"},"modified":"2022-02-04T16:41:12","modified_gmt":"2022-02-04T16:41:12","slug":"how-we-improved-infrastructure-and-applications","status":"publish","type":"post","link":"https:\/\/www.masabi.com\/es\/news\/how-we-improved-infrastructure-and-applications\/","title":{"rendered":"Improving infrastructure and applications to keep up with customer growth"},"content":{"rendered":"<div class=\"block-\"><span style=\"font-weight: 400;\">Passenger Cloud presents itself to operators as a singular service, however, there are many individual services which come together in order to create Passenger Cloud, for example;<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Mobile Ticketing<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Journey Planning<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Timetabling<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Places Search<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Live bus tracking<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Each of these individual services has its own complexities and can rely on each other &#8211; changing one service may impact other services in unexpected ways. Some of these services span across multiple servers too, as this helps with things like high availability.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">In the past<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Passenger has made strong use of monitoring systems such as NewRelic and Sentry in the past to give alerts and monitoring across passenger services.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Previously, when an issue was discovered this would require some time from an engineer to explore manually by directly accessing each server and piecing information together from NewRelic and Sentry, in order to discover the underlying issue and develop a fix.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">We were alerted on critical external failures and large changes in response times via NewRelic, however, we did not have a historical log to compare overall long-term trends. We also could not alert on specific problems with servers, only their impact upon serving end-user requests.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">What we wanted to improve<\/span><\/h2>\n<ol>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">More data &#8211; the ability to collect any piece of information from a server\/application into a single searchable database.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Historical data &#8211; the ability to see historical trends.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Dependency &#8211; reduce the dependency on third parties, i.e. cloud providers, monitoring services.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Centralised management &#8211; singular place to change the configuration.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Integration &#8211; the ability to integrate with third parties, e.g. AWS CloudWatch<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Alerts &#8211; the ability to alert on any metric collected, real-time or historical.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Communication &#8211; the ability to send alerts via multiple transport mechanisms<\/span><\/li>\n<\/ol>\n<h2><span style=\"font-weight: 400;\">What we implemented<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">After researching the available solutions, we decided to roll the NPG stack.<\/span><\/p>\n<ul>\n<li><span style=\"font-weight: 400;\">Netdata &#8211; \u201cReal-time performance monitoring, done right\u201d<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Prometheus &#8211; \u201cThe Prometheus monitoring system and time series database\u201d<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Grafana &#8211; \u201cThe tool for beautiful monitoring and metric analytics &amp; dashboards\u201d<\/span><\/li>\n<\/ul>\n<h3><span style=\"font-weight: 400;\">Netdata<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Netdata is designed for the real-time monitoring of servers. It can collect and alert on metrics in real-time with a tiny footprint (~36MB for our most complex service). We added Netdata to each individual server across Passenger services.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">These Netdata \u2018child\u2019 instances can be directly accessed by an engineer, however, they also stream data in real-time to a Netdata \u2018parent\u2019 instance which allows an easy centralised place to determine what is currently happening across all instances. The child and parent instances store up to 1 hour of real-time metrics.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">If any single Netdata instance became inaccessible it does not affect any other services.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">If the Netdata \u2018parent\u2019 became inaccessible, an engineer can still directly access each individual \u201cchild\u201d instance.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Prometheus<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Prometheus is designed for monitoring large numbers of metrics across multiple servers, it can poll each server for metrics and then store, query and alert on those metrics within its time-series database.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">We deployed Prometheus, configured to poll every Netdata instance every 5 seconds, using the Netdata API exporting the Prometheus format.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">We also deployed the Prometheus blackbox exporter &#8211; a tool used in conjunction with Prometheus to probe external endpoints to determine availability.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Prometheus allows us to write complex queries\/alerts on this data, across long periods of time (currently 90 days max).<\/span><\/p>\n<p><span style=\"font-weight: 400;\">For example, we can predict based on the previous 72 hours of disk usage when a server\u2019s disk will fill up &#8211; allowing us to add more resources ahead of time before any issues are caused.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Grafana<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Grafana is designed to make dashboards and graphs.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">We deployed Grafana with a variety of dashboards designed for different engineering teams with data most relevant to them. We also integrated Grafana with AWS CloudWatch so we can access more metrics in a single workflow, including billing metrics\/alerts.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">We integrated our deployment chatbot (affectionately named R2D2) and SSH logs using Grafana annotations. This allows us to see an annotation across all dashboards\/graphs for all deployments, as well as which engineer accessed which server at what time. This allows us to easily see the impact of an application or infrastructure change.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Who watches the watchers?<\/span><\/h3>\n<ul>\n<li><span style=\"font-weight: 400;\">Grafana alerts on Prometheus status<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Prometheus alerts on Netdata status<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Netdata alerts on everything (including Prometheus and Grafana)<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Humans watch\/are alerted by email and Slack<\/span><\/li>\n<\/ul>\n<h2><span style=\"font-weight: 400;\">Results<\/span><\/h2>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Our Netdata master ingests over 100,000 series of data points in real-time.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Our Prometheus server ingests over 100,000 series of data points every 5 seconds.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">We currently store 90 days worth of historical data with 5-second accuracy.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Most of our Prometheus rules are evaluated within 2 milliseconds, our more intensive historical ones which cover a larger window of data are still evaluated in less than a second.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">We have made proactive improvements to services based on the insights from the historical metrics.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">We have reduced our server costs by more accurately matching resources to demand.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">We have avoided potential downtime by resolving issues quicker.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Everyone is more aware of the state of our infrastructure, we even have a TV in the office showing the state of our core services<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Where we\u2019ve had outages in this system due to configuration errors, we\u2019ve never had an outage of every single component, we\u2019ve always had access to the data we required.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">We have greatly improved understanding of the impact of and confidence in changes we make to infrastructure \/ services.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">We rebuilt all of our core services in less than a day when the Intel MDS\/ZombieLoad incident happened.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Since making these changes, we\u2019ve received some great internal feedback following the success of the project.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Alex Ross, Senior Software Engineer commented:<\/span><\/p>\n<blockquote><p><span style=\"font-weight: 400;\">\u201cWith our new monitoring systems we have better insight into what\u2019s going on during an event and we can quickly look at historical data using Grafana to compare a data series. During one of our busiest days in the snow, earlier this year, we were confident as we had enough insight into our infrastructure so that we could focus our efforts on ensuring that our services were stable and available for our passengers. This was a good return on investment as snow days have previously been tricky for us to manage.\u201d<\/span><\/p><\/blockquote>\n<p><span style=\"font-weight: 400;\">Matt Morgan, Operations Director says:<\/span><\/p>\n<blockquote><p><span style=\"font-weight: 400;\">\u201cThe single viewport has helped the team increase efficiency and reduce overall costs, there are very few downsides to that. It\u2019s great to see the data streaming to the dashboards and displayed on the TV\u2019s as this gives everyone in the room an overview of how the platform is performing at a glance.\u201d<\/span><\/p><\/blockquote>\n<h2><span style=\"font-weight: 400;\">Moving forward<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">We\u2019d like to share our monitoring data with operators, and possibly even the end-users of our services as customer-facing status pages.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">We\u2019d like to instrument our applications with StatsD, which would put our application metrics in the same pipeline as our infrastructure metrics.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Through the monitoring, we&#8217;ve discovered some dependencies between services and identified some areas where we can increase resilience by using patterns like automatic circuit breakers, so one service failure has zero impact on other services.<\/span><\/p>\n<p><em>Photo by <strong><a href=\"https:\/\/www.pexels.com\/@edwinjosevega?utm_content=attributionCopyText&amp;utm_medium=referral&amp;utm_source=pexels\">edwin jos\u00e9 vega ramos<\/a><\/strong><\/em><\/div>\n","protected":false},"excerpt":{"rendered":"<p>As Passenger on-boarded new operators, we had to make changes to our infrastructure and applications to support increased traffic, new features and maintain quick response times.<\/p>\n","protected":false},"author":7,"featured_media":12727,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[21],"tags":[59],"class_list":["post-4441","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-making-passenger","tag-customers","making-passenger"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Improving infrastructure and applications to keep up with customer growth - Masabi<\/title>\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.masabi.com\/es\/news\/how-we-improved-infrastructure-and-applications\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Improving infrastructure and applications to keep up with customer growth - Masabi\" \/>\n<meta property=\"og:description\" content=\"As Passenger on-boarded new operators, we had to make changes to our infrastructure and applications to support increased traffic, new features and maintain quick response times.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.masabi.com\/es\/news\/how-we-improved-infrastructure-and-applications\/\" \/>\n<meta property=\"og:site_name\" content=\"Masabi\" \/>\n<meta property=\"article:published_time\" content=\"2019-07-28T10:30:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-02-04T16:41:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/07\/bus-city-evening-2189308-scaled-2.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1707\" \/>\n\t<meta property=\"og:image:height\" content=\"2560\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"TomQuay\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"TomQuay\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.masabi.com\\\/es\\\/news\\\/how-we-improved-infrastructure-and-applications\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.masabi.com\\\/es\\\/news\\\/how-we-improved-infrastructure-and-applications\\\/\"},\"author\":{\"name\":\"TomQuay\",\"@id\":\"https:\\\/\\\/www.masabi.com\\\/es\\\/#\\\/schema\\\/person\\\/7f9321d16421f5dd31179aec75bd022d\"},\"headline\":\"Improving infrastructure and applications to keep up with customer growth\",\"datePublished\":\"2019-07-28T10:30:59+00:00\",\"dateModified\":\"2022-02-04T16:41:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.masabi.com\\\/es\\\/news\\\/how-we-improved-infrastructure-and-applications\\\/\"},\"wordCount\":1180,\"image\":{\"@id\":\"https:\\\/\\\/www.masabi.com\\\/es\\\/news\\\/how-we-improved-infrastructure-and-applications\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.masabi.com\\\/wp-content\\\/uploads\\\/2019\\\/07\\\/bus-city-evening-2189308-scaled-2.jpg\",\"keywords\":[\"Customers\"],\"articleSection\":[\"Making Passenger\"],\"inLanguage\":\"es\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.masabi.com\\\/es\\\/news\\\/how-we-improved-infrastructure-and-applications\\\/\",\"url\":\"https:\\\/\\\/www.masabi.com\\\/es\\\/news\\\/how-we-improved-infrastructure-and-applications\\\/\",\"name\":\"Improving infrastructure and applications to keep up with customer growth - Masabi\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.masabi.com\\\/es\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.masabi.com\\\/es\\\/news\\\/how-we-improved-infrastructure-and-applications\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.masabi.com\\\/es\\\/news\\\/how-we-improved-infrastructure-and-applications\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.masabi.com\\\/wp-content\\\/uploads\\\/2019\\\/07\\\/bus-city-evening-2189308-scaled-2.jpg\",\"datePublished\":\"2019-07-28T10:30:59+00:00\",\"dateModified\":\"2022-02-04T16:41:12+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.masabi.com\\\/es\\\/#\\\/schema\\\/person\\\/7f9321d16421f5dd31179aec75bd022d\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.masabi.com\\\/es\\\/news\\\/how-we-improved-infrastructure-and-applications\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.masabi.com\\\/es\\\/news\\\/how-we-improved-infrastructure-and-applications\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.masabi.com\\\/es\\\/news\\\/how-we-improved-infrastructure-and-applications\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.masabi.com\\\/wp-content\\\/uploads\\\/2019\\\/07\\\/bus-city-evening-2189308-scaled-2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.masabi.com\\\/wp-content\\\/uploads\\\/2019\\\/07\\\/bus-city-evening-2189308-scaled-2.jpg\",\"width\":1707,\"height\":2560},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.masabi.com\\\/es\\\/news\\\/how-we-improved-infrastructure-and-applications\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.masabi.com\\\/es\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Improving infrastructure and applications to keep up with customer growth\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.masabi.com\\\/es\\\/#website\",\"url\":\"https:\\\/\\\/www.masabi.com\\\/es\\\/\",\"name\":\"Masabi\",\"description\":\"Making shared transport the first choice\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.masabi.com\\\/es\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.masabi.com\\\/es\\\/#\\\/schema\\\/person\\\/7f9321d16421f5dd31179aec75bd022d\",\"name\":\"TomQuay\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/670e69485b65f2c5a6ee3fb9d0e3ed3163fb4107b7ab9ade42394576b7d42571?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/670e69485b65f2c5a6ee3fb9d0e3ed3163fb4107b7ab9ade42394576b7d42571?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/670e69485b65f2c5a6ee3fb9d0e3ed3163fb4107b7ab9ade42394576b7d42571?s=96&d=mm&r=g\",\"caption\":\"TomQuay\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Improving infrastructure and applications to keep up with customer growth - Masabi","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.masabi.com\/es\/news\/how-we-improved-infrastructure-and-applications\/","og_locale":"es_ES","og_type":"article","og_title":"Improving infrastructure and applications to keep up with customer growth - Masabi","og_description":"As Passenger on-boarded new operators, we had to make changes to our infrastructure and applications to support increased traffic, new features and maintain quick response times.","og_url":"https:\/\/www.masabi.com\/es\/news\/how-we-improved-infrastructure-and-applications\/","og_site_name":"Masabi","article_published_time":"2019-07-28T10:30:59+00:00","article_modified_time":"2022-02-04T16:41:12+00:00","og_image":[{"width":1707,"height":2560,"url":"https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/07\/bus-city-evening-2189308-scaled-2.jpg","type":"image\/jpeg"}],"author":"TomQuay","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"TomQuay","Tiempo de lectura":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.masabi.com\/es\/news\/how-we-improved-infrastructure-and-applications\/#article","isPartOf":{"@id":"https:\/\/www.masabi.com\/es\/news\/how-we-improved-infrastructure-and-applications\/"},"author":{"name":"TomQuay","@id":"https:\/\/www.masabi.com\/es\/#\/schema\/person\/7f9321d16421f5dd31179aec75bd022d"},"headline":"Improving infrastructure and applications to keep up with customer growth","datePublished":"2019-07-28T10:30:59+00:00","dateModified":"2022-02-04T16:41:12+00:00","mainEntityOfPage":{"@id":"https:\/\/www.masabi.com\/es\/news\/how-we-improved-infrastructure-and-applications\/"},"wordCount":1180,"image":{"@id":"https:\/\/www.masabi.com\/es\/news\/how-we-improved-infrastructure-and-applications\/#primaryimage"},"thumbnailUrl":"https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/07\/bus-city-evening-2189308-scaled-2.jpg","keywords":["Customers"],"articleSection":["Making Passenger"],"inLanguage":"es"},{"@type":"WebPage","@id":"https:\/\/www.masabi.com\/es\/news\/how-we-improved-infrastructure-and-applications\/","url":"https:\/\/www.masabi.com\/es\/news\/how-we-improved-infrastructure-and-applications\/","name":"Improving infrastructure and applications to keep up with customer growth - Masabi","isPartOf":{"@id":"https:\/\/www.masabi.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.masabi.com\/es\/news\/how-we-improved-infrastructure-and-applications\/#primaryimage"},"image":{"@id":"https:\/\/www.masabi.com\/es\/news\/how-we-improved-infrastructure-and-applications\/#primaryimage"},"thumbnailUrl":"https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/07\/bus-city-evening-2189308-scaled-2.jpg","datePublished":"2019-07-28T10:30:59+00:00","dateModified":"2022-02-04T16:41:12+00:00","author":{"@id":"https:\/\/www.masabi.com\/es\/#\/schema\/person\/7f9321d16421f5dd31179aec75bd022d"},"breadcrumb":{"@id":"https:\/\/www.masabi.com\/es\/news\/how-we-improved-infrastructure-and-applications\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.masabi.com\/es\/news\/how-we-improved-infrastructure-and-applications\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.masabi.com\/es\/news\/how-we-improved-infrastructure-and-applications\/#primaryimage","url":"https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/07\/bus-city-evening-2189308-scaled-2.jpg","contentUrl":"https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/07\/bus-city-evening-2189308-scaled-2.jpg","width":1707,"height":2560},{"@type":"BreadcrumbList","@id":"https:\/\/www.masabi.com\/es\/news\/how-we-improved-infrastructure-and-applications\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.masabi.com\/es\/"},{"@type":"ListItem","position":2,"name":"Improving infrastructure and applications to keep up with customer growth"}]},{"@type":"WebSite","@id":"https:\/\/www.masabi.com\/es\/#website","url":"https:\/\/www.masabi.com\/es\/","name":"Masabi","description":"Making shared transport the first choice","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.masabi.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/www.masabi.com\/es\/#\/schema\/person\/7f9321d16421f5dd31179aec75bd022d","name":"TomQuay","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/670e69485b65f2c5a6ee3fb9d0e3ed3163fb4107b7ab9ade42394576b7d42571?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/670e69485b65f2c5a6ee3fb9d0e3ed3163fb4107b7ab9ade42394576b7d42571?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/670e69485b65f2c5a6ee3fb9d0e3ed3163fb4107b7ab9ade42394576b7d42571?s=96&d=mm&r=g","caption":"TomQuay"}}]}},"_links":{"self":[{"href":"https:\/\/www.masabi.com\/es\/wp-json\/wp\/v2\/posts\/4441","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.masabi.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.masabi.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.masabi.com\/es\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.masabi.com\/es\/wp-json\/wp\/v2\/comments?post=4441"}],"version-history":[{"count":0,"href":"https:\/\/www.masabi.com\/es\/wp-json\/wp\/v2\/posts\/4441\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.masabi.com\/es\/wp-json\/wp\/v2\/media\/12727"}],"wp:attachment":[{"href":"https:\/\/www.masabi.com\/es\/wp-json\/wp\/v2\/media?parent=4441"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.masabi.com\/es\/wp-json\/wp\/v2\/categories?post=4441"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.masabi.com\/es\/wp-json\/wp\/v2\/tags?post=4441"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}