Mirantis Newsletter – November 2021

Every month, the team at Mirantis sends out a newsletter chronicling top industry and company news. Below you’ll find links to thought leadership articles, blogs, tutorials, and the latest updates to our enterprise, open source, and training offerings. If you don’t currently receive the newsletter, you can subscribe using the form on the right. Mirantis … Continued
Quelle: Mirantis

How to develop Global Multiplayer Games using Cloud Spanner

Most modern video games require years of investment to produce, both in terms of development time and capital. The length of development is influenced by a number of factors, such as scale, development platform, scope, and type of game. Gamers often expect global multiplayer experiences on Day 1, which means that the success of a game can depend on how well it can scale to a community of millions of players in the first few weeks of its life. High availability and stability must be built into the design of a game to handle this demand for scale. Issues that take place during the opening days of the game’s life can be fatal, as players are slow to return after a bad experience, and the hype of anticipation quickly fades. In other words, momentum is everything.How does Cloud Spanner address architectural complexity?All types of online games require storing immense amounts of data, such as player achievements and stats, leaderboards, game data, and much more, and must do so at scale. The amount of data can grow both linearly or exponentially as more players join the game; thus the most important requirement for a game’s database is the ability to scale while providing high availability. Gaming workloads typically require NoSQL and relational databases to attain scalability while maintaining strict consistency on gaming data selectively. On Google Cloud, Firestore and Bigtable options can be considered for NoSQL depending on the unique requirements of the game such as mobile first or cross platform support requirements. When it comes to relational databases, nothing matches Spanner in terms of offering both scalability and global consistency via the interface that we’re all familiar with, SQL.Spanner is our distributed, globally scalable SQL database service that decouples compute from storage, which makes it possible to scale processing resources separately from storage. This means that horizontal upscaling is possible with no downtime for achieving higher performance on dimensions such as operations per second for both reads and writes. The distributed scaling nature of Spanner’s architecture makes it an ideal solution for unpredictable workloads such as online games.Unplanned game downtimes are the single most dangerous threat to the longevity of game titles. That’s why game companies seek highly available backend databases to minimize game service interruption in case of unplanned failures. Spanner delivers industry-leading 99.999% availability for multi-regional instances, and provides transparent, synchronous replication across both regional and multi-region configurations. Globally distributed replica shards can provide an additional benefit of shortening latency by serving from a local copy.Spanner supports relational semantics like ANSI SQL and schema with no need to denormalize, and enables easy updates to your game service databases online. ANSI SQL can shorten the learning curve for developers and Database Administrators (DBAs). In addition, object–relational mapping (ORM) support can also reduce development time.Spanner has compliance certifications which can make abiding by compliance requirements easier for gaming companies, like PCI, SoC compliance, and FedRAMP. In addition, Spanner has VPC-SC support, Audit Logging which includes not only admin jobs but also user activities (DML, DDL, even Query).Recommended Spanner Adoption ProcessSpanner adoption has a very well-defined process, and following along these major milestones above can make it easy. Because Spanner is a distributed database supporting relational semantics, it’s important to understand the differences compared to traditional relational databases. We recommend your development team and DBA start evaluating Spanner at the earliest stages of the game development lifecycle to minimize trial and error, as well as, future optimizations.After getting acquainted with Spanner, the ANSI SQL and Schema support of Spanner allows you to easily convert existing relational database schemas and relevant queries with just a few changes. Several gaming customers completed this conversion in as little as 2-3 weeks. Various tools like Harbourbridge, an evaluation and migration open source tool, can make heterogeneous migrations to Spanner reliable and easy. Spanner, like other databases, needs performance optimization with load testing to meet target performance requirements such as throughput and latency. That’s why Spanner provides introspection tools to deliver insights for optimization. In addition, intuitive and visualized query execution plans enable developers who lack deep database knowledge to optimize long-running queries. Pre-warming the database before the game launch day to make Spanner well distributed and embrace enough throughput.Niantic Labs built a globally scalable game for millions of users on Google Cloud. They shared their experience scaling with Google Kubernetes Engine (GKE) and Spanner, and described how their data science team works with BigQuery, Dataflow, and Pub/Sub for their data analytics.Vimeo is the leading player in the growing video SaaS market, serving over 200 million users across more than 190 countries. In this video, they share how Cloud Spanner powers Vimeo’s platform, and why Vimeo decided to use Google Cloud.To learn more about this globally scalable game backend on Google Cloud, Spanner’s advantages and the differences over traditional relational databases, read our Develop Global Multiplayer Games using Cloud Spanner whitepaper.
Quelle: Google Cloud Platform

Avoiding GCF anti-patterns part 5: How to run background processes correctly in Python

Editor’s note: Over the past several weeks, we’ve posted a series of blog posts focusing on best practices for writing Google Cloud Functions based on common questions or misconceptions as seen by the Support team.  We refer to these as “anti-patterns” and offer you ways to avoid them.  This article is the fifth post in the series.ScenarioYou see finished with status: ‘timeout’ in the logs before a background process has completed in your Python Function. Most common root issueAlthough this timeout error can happen for Functions using any runtime, we most often see this issue occur when Python developers try to use os.fork() or  multiprocessing.Process()in their Cloud Function.Why you should try to avoid async work in a Function:A background task started by a Cloud Function is not guaranteed to complete. As soon as the Functions completes, e.g. the Function returns or a timeout error occurs, the Function instance can be terminated at any time. You can read more about the Function execution timeline in the documentation.We often see customers test their functions locally where these execution timeouts do not exist. Additionally, customers’ local machines may be more powerful than what they have provisioned for their Cloud Functions. Customers may see these multiprocessing scenarios working locally and therefore assume their code will work in the same way in the Cloud Function instance.  For Python developers who require such async operations, we suggest using Cloud Tasks Service instead to schedule the background operation. See example below.Using Cloud Tasks in a Python Cloud FunctionThe following Function demonstrates how you can use Cloud Tasks to schedule an async operation. This example shows a Cloud Function (named “create_task”) that creates a Cloud Task to invoke another Cloud Function that will run the background task. You can learn more about creating HTTP target tasks.Other helpful tipsAlthough this tutorial is written for Node.js, it walks you through creating a Cloud Task queue and setting up a service account that will invoke the Function from Cloud Task. By specifying a service account for the Task, you can use an authenticated Function.If you’re using a different service account to invoke the Function (rather than your Function’s identity), you need to verify that the service account has the Cloud Functions Invoker role `roles/cloudfunctions.invoker`. If you’re using a different service account for your “create_task” Function’s identity than the default, you need to verify that the service account has permissions to create Tasks. It will need the Cloud Tasks Enqueuer role `roles/cloudtasks.enqueuer`.You can also read more about Cloud Tasks in our third blog post in this series on making outbound connections.Related ArticleAvoiding GCF anti-patterns part 4: How to handle Promises correctly in your Node.js Cloud FunctionFourth post in a series on how to avoid anti-patterns in Google Cloud Functions as seen by the Support team. This post explores how to ve…Read Article
Quelle: Google Cloud Platform

Docker at Devoxx France and the U.K.

As Docker is a full-remote company, we have employees scattered across the Americas and Europe. We’re building tools to help developers all over the world build software better. As developers, we know that to do this well, we need to be actively involved in the developer community so we encourage our engineers to speak at local conferences.

Some of Docker’s French Engineers spoke at Devoxx France this year. The event was held at the Palais des Congrés in Paris from 29 September to 1 October. Devoxx France is the biggest developer conference in France with, before pandemic restrictions, 3000 attendees and 240 talks and hands-on labs each year. The conference covers topics from Java and its ecosystem, to the Web, Big Data, IoT, Cloud computing and Software architecture.

Guillaume Lours presented a talk with Jérémie Drouet about Dockerfile best practices that you can watch (in French) below. During this session they split a monolith application defined by a single Dockerfile to a microservices stack by applying Dockerfile improvements such as order layers, and using multistage builds.

Yves Brissaud presented a talk about building and using Cloud Native Application Bundles (CNAB) using Porter. You can watch his talk (in French) below and browse the slides in English. This talk starts with a short definition of Cloud Native and why Application Bundles can help us to improve application packaging and deployment. Two demos of CNAB using Porter were shown. You can find all the materials to reproduce them here.

More recently, Devoxx UK took place between the 1st and the 3th of November. A hybrid format for the conference was used with both in-person and online sessions and audience.

Guillaume Lours was part of the lineup to show Docker Dev Environments in action. This presentation shows you how to create a Dev Environment from a simple copy/paste of a Git repository URL, how you use Dev Envs to manage PR review or test the work in progress of your teammates. The slide deck is available here and the video of the talk should be available soon in the Devoxx Youtube channel.

If you’d like to help us build tools that developers love, take a look at our careers page where we have a lot of open positions.

The post Docker at Devoxx France and the U.K. appeared first on Docker Blog.
Quelle: https://blog.docker.com/feed/

AWS Amplify gibt die Fähigkeit zum Überschreiben von durch Amplify generierten Ressourcen mit CDK bekannt

AWS Amplify gibt die Fähigkeit von Entwicklern zum Überschreiben von durch Amplify generierter IAM-, Cognito- und S3-Konfiguration zur besseren Entsprechung der App-Anforderungen bekannt. Die AWS Amplify CLI ist eine Befehlszeilen-Toolkette, mit der Frontend-Entwickler App-Backends in der Cloud erstellen können. Mit der neuen Überschreibungsfunktion können Entwickler ihr Backend einfach mit durch Amplify bereitgestellten Standards konfigurieren und trotzdem detailgenaue Ressourceneinstellungen anpassen.
Quelle: aws.amazon.com

AWS CloudFormation unterstützt jetzt AWS IoT Device Management

Wir freuen uns, bekanntzugeben, dass Ressourcen von AWS IoT Device Management jetzt auf AWS CloudFormation unterstützt werden. Mit ein paar Klicks können Sie jetzt eine CloudFormation-Vorlage verwenden, um IoT-Flottenverwaltungs-Infrastruktur, wie Auftrags-Vorlagen, Flotte-Metriken und IoT-Protokollierungs-Einstellungen auf standardisierte und wiederholbare Weise über mehrere Regionen und Konten hinweg zu konfigurieren und bereitzustellen.
Quelle: aws.amazon.com

Amazon Connect führt APIs zur programmgesteuerten Konfiguration von Sicherheitsprofilen ein

Amazon Connect bietet jetzt eine API zum programmgesteuerten Erstellen und Verwalten von Sicherheitsprofilen. Sicherheitsprofile helfen Ihnen dabei, zu verwalten, wer in Amazon Connect Zugriff hat und Aktionen ausführen kann, z. B. das Contact Control Panel (CCP) zu nutzen, einen neuen Kundendienstmitarbeiter hinzuzufügen oder die integrierten Berichte einzusehen. Mit dieser API können Sie Sicherheitsprofile programmgesteuert so aktualisieren, wie sich Ihre Zugriffskontroll-Anforderungen in Amazon Connect ändern. Weitere Informationen finden Sie in der API-Dokumentation.
Quelle: aws.amazon.com

AWS Launch Wizard unterstützt jetzt Microsoft-SQL-Serverbereitstellung mit Amazon-EBS-gp3, -io2 und -io2-Block-Express-Volumes

AWS Launch Wizard unterstützt Amazon Elastic Block Store (EBS)-gp3, -io2 und -io2-Block-Express-Volumes für Microsoft-SQL-Serverbereitstellungen. Jetzt können Sie die neuen Versionen von EBS-Volumes voll ausnutzen, wenn Sie den Launch Wizard für Hochverfügbarkeits- oder Einzelknoten-Bereitstellungen eines SQL-Servers auf Amazon EC2 nutzen.
Quelle: aws.amazon.com