London Summit: UK businesses turn to Google Cloud AI

The AI era is here, and the UK is at the forefront. 
Over the past year, search interest for “AI” has surged by 50% in the country, while inquiries about “how to use AI” have jumped 70%. By 2030, AI could generate more than £400 billion ($524 billion) in value for the UK economy and save more than 700,000 administrative hours annually across sectors like healthcare, education, and finance. Central to this transformation is Gemini, Google Cloud’s next-generation AI foundation model, which is empowering UK businesses across all sectors to unlock new possibilities in a rapidly evolving landscape.
This week, the energy is palpable, as we welcome customers and partners to the Google Cloud Summit London at Tobacco Dock to experience how Gemini is helping shape the future of business and unlocking business value. The summit also showcases innovations from across Google Cloud’s extensive portfolio of products and services, as well as from our ecosystem of customers and partners — illustrating how AI is transforming different industries and equipping UK businesses to stay ahead in a competitive landscape.
And what a way to kick off the summit than with yesterday’s announcement of Google’s deepening partnership with Vodafone. This expands beyond our longstanding work together in the cloud, with a 10-year, billion-plus-dollar deal that includes cybersecurity, devices, and cloud services across Europe and Africa. As Google’s CEO, Sundar Pichai, noted: “I’m excited to see how Vodafone’s consumers, small businesses, and governments will use generative AI and Google Cloud to transform the way they work and access information.”
I’m also excited to further support our customers’ growth with Google Cloud’s $1 billion investment in a new UK data center in Waltham Cross, Hertfordshire. Unveiled in January, this major project reinforces our commitment to AI innovation and delivering reliable digital services across Europe and the world. We’re also fueling this digital growth with key updates and announcements made today from both Google Cloud and our customers. 
Empowering customers with data and AI solutions
The momentum behind AI is undeniable — nearly two-thirds of UK organizations have earmarked at least half of their AI budget for generative AI. These tools have the potential to generate £4.8 billion in productivity savings, according to research from Public First.
Today, we are proud to highlight leading UK companies who are already harnessing Gemini and Google Cloud AI capabilities to drive real-world impact: 

BUPA UK is using Google Cloud to build a cloud-first digital customer platform providing direct access to care when needed, as well as the tools to enable proactive health outcomes for customers. This new digital platform will allow BUPA to develop innovative ways to improve members’ wellbeing, reducing the cost of care all while delivering a highly personalized healthcare experience.

Dunelm has partnered with Google Cloud to enhance its online shopping experience with a new gen AI-driven product discovery solution. This has shown significant improvements in a number of key areas, including reduced search friction, helping customers find the products they are looking for.

Incubeta is using Gemini for Google Workspace, primarily with their development teams, to streamline architecture documentation and code refinements, and to reduce time spent on these tasks. They also use it for client teams to assist with mundane tasks and for creative conception.

Vodafone — in addition to its 10-year expanded partnership with Google — also recently completed the migration of its SAP ERP resource planning database to Google Cloud. One of the largest shifts of its kind, it was completed with zero business interruptions. At the summit, the team will be sharing more about this work, which boosted performance while shrinking costs and Vodafone’s carbon footprint.

Data residency for machine learning available in the UK
We understand the importance of data sovereignty for certain industries. That’s why Google Cloud is expanding our data residency commitment, enabling UK organizations to run machine learning processing for Gemini 1.5 Flash within the UK. 
This effort helps address key data sovereignty and compliance concerns that enable UK organizations, including the public sector, to leverage gen AI while maintaining strict control over their data. 
Fueling the next generation of UK and EMEA startups
We are also excited to share that since 2023, more than 60% of UK-based gen-AI startups are Google Cloud customers. Yesterday, at our global Startup Summit, we announced several important updates that are relevant for UK AI startups. These include our Startup School for AI skill-building and the ISV Startup Springboard offering extensive go-to-market and co-selling opportunities with Google Cloud and our partners. We’ve also launched a partnership with the startup accelerator 500 Global to provide streamlined access to Google Cloud’s AI platform
As part of today’s summit, we’re launching the Google Cloud Startup Hub in London — a dedicated community space designed to provide in-person education and engagement for startups and developers. Open five days a week with business hours from 9 a.m. to 6 p.m. or until 9 p.m. to accommodate evening events, the hub offers hands-on learning for Google Cloud and partner solutions and access to experts. 
At the hub, we will host exclusive sessions with industry leaders and facilitate invaluable networking opportunities with investors and peers. The Google Cloud Startup Hub also serves as a vital community resource where key partners can also host events. 
Some examples of how UK startups are driving breakthroughs with Google Cloud are: 

BioCorteX, in collaboration with Google Cloud, announces a breakthrough in ADC research for cancer treatment using its “Unified Biology” approach. The research has uncovered a crucial link between the tumor microenvironment and ADC efficacy, potentially transforming personalized cancer therapy. 

Motorway uses Google Cloud AI to streamline the process of buying and selling used cars online. With Google Cloud’s AI, Motorway has been able to build and deploy AI models faster, automate document processing, and provide industry-leading vehicle valuations.

OnBuy, a fast-growing ecommerce marketplace, partners with Google Cloud for international expansion and enhanced customer experience. Google Cloud’s infrastructure, data storage, and AI tools enable OnBuy to scale, improve efficiency, and innovate.

We’re also announcing the opening of the new AI Playground, located within the same space as the Google Cloud Startup Hub. An experiential AI demo space, the AI Playground is aimed at inspiring and empowering developers and organizations to build incredible new applications and solve business challenges with AI and ML.
Google Cloud’s commitment to making data and AI more accessible and powerful for all users
To help enhance our overall data platform, we’re also sharing a number of important product updates and announcements. These will deliver better insights and efficiencies for our customers and boost the performance of their AI offerings and projects. Data is the foundation of any AI work, so without having a handle on the former, it’s hard to succeed in the latter.
BigQuery, our unified enterprise gen AI-ready data platform, has now been integrated with our Gemini models. Gemini in BigQuery makes data prep easier, offering an intuitive natural-language interface that can help data teams generate insights from metadata and other large datasets, and it’s especially useful for new batches of data. 
We also have new synthetic data capabilities, with BigQuery Dataframes, which make it easier to run and train models when inputs are more limited. Gemini in Looker has added conversational analytics, which lets you use a search experience similar to those found across Google; this allows for data exploration using natural language that surfaces actionable insights more easily.
For enhanced security, BigQuery now supports cross-region disaster recovery with multi-factor authentication, ensuring business continuity and data protection. 
New managed BigQuery workflows assist data engineers in building data pipelines. For data ingestion, customers can use new managed services for Flink and Kafka to better configure, tune, scale, monitor, and upgrade real-time workloads. A unified data catalog in BigQuery helps organize and manage all your data and metadata, making it easier to discover and use, while BigQuery catalog semantic search, available in preview, expands the ability to find data using natural language. These search features make BigQuery more intuitive and accessible to everyone.
Google is also launching a new enterprise tier of Code Assist, our AI-powered coding partner, which can help teams with work throughout the software development lifecycle. This enterprise tier will offer enhanced security, improved context for better accuracy and reliavbility, and wider integration with Google Cloud services.
With these investments and the customer momentum showcased today, Google Cloud is reinforcing the UK’s role in shaping the future of AI and strengthening the future we can build together on the cloud. 
Call to action – Browse upcoming events & sign up!
Quelle: Google Cloud Platform

Leveraging Testcontainers for Complex Integration Testing in Mattermost Plugins

This post was contributed by Jesús Espino, Principal Engineer at Mattermost.

In the ever-evolving software development landscape, ensuring robust and reliable plugin integration is no small feat. For Mattermost, relying solely on mocks for plugin testing became a limitation, leading to brittle tests and overlooked integration issues. Enter Testcontainers, an open source tool that provides isolated Docker environments, making complex integration testing not only feasible but efficient. 

In this blog post, we dive into how Mattermost has embraced Testcontainers to overhaul its testing strategy, achieving greater automation, improved accuracy, and seamless plugin integration with minimal overhead.

The previous approach

In the past, Mattermost relied heavily on mocks to test plugins. While this approach had its merits, it also had significant drawbacks. The tests were brittle, meaning they would often break when changes were made to the codebase. This made the tests challenging to develop and maintain, as developers had to constantly update the mocks to reflect the changes in the code.

Furthermore, the use of mocks meant that the integration aspect of testing was largely overlooked. The tests did not account for how the different components of the system interacted with each other, which could lead to unforeseen issues in the production environment. 

The previous approach additionally did not allow for proper integration testing in an automated way. The lack of automation made the testing process time-consuming and prone to human error. These challenges necessitated a shift in Mattermost’s testing strategy, leading to the adoption of Testcontainers for complex integration testing.

Mattermost’s approach to integration testing

Testcontainers for Go

Mattermost uses Testcontainers for Go to create an isolated testing environment for our plugins. This testing environment includes the Mattermost server, the PostgreSQL server, and, in certain cases, an API mock server. The plugin is then installed on the Mattermost server, and through regular API calls or end-to-end testing frameworks like Playwright, we perform the required testing.

We have created a specialized Testcontainers module for the Mattermost server. This module uses PostgreSQL as a dependency, ensuring that the testing environment closely mirrors the production environment. Our module allows the developer to install and configure any plugin you want in the Mattermost server easily.

To improve the system’s isolation, the Mattermost module includes a container for the server and a container for the PostgreSQL database, which are connected through an internal Docker network.

Additionally, the Mattermost module exposes utility functionality that allows direct access to the database, to the Mattermost API through the Go client, and some utility functions that enable admins to create users, channels, teams, and change the configuration, among other things. This functionality is invaluable for performing complex operations during testing, including API calls, users/teams/channel creation, configuration changes, or even SQL query execution. 

This approach provides a powerful set of tools with which to set up our tests and prepare everything for verifying the behavior that we expect. Combined with the disposable nature of the test container instances, this makes the system easy to understand while remaining isolated.

This comprehensive approach to testing ensures that all aspects of the Mattermost server and its plugins are thoroughly tested, thereby increasing their reliability and functionality. But, let’s see a code example of the usage.

We can start setting up our Mattermost environment with a plugin like this:

pluginConfig := map[string]any{}
options := []mmcontainer.MattermostCustomizeRequestOption{
mmcontainer.WithPlugin("sample.tar.gz", "sample", pluginConfig),
}
mattermost, err := mmcontainer.RunContainer(context.Background(), options…)
defer mattermost.Terminate(context.Background()

Once your Mattermost instance is initialized, you can create a test like this:

func TestSample(t *testing.T) {
client, err mattermost.GetClient()
require.NoError(t, err)
reqURL := client.URL + "/plugins/sample/sample-endpoint"
resp, err := client.DoAPIRequest(context.Background(), http.MethodGet, reqURL, "", "")
require.NoError(t, err, "cannot fetch url %s", reqURL)
defer resp.Body.Close()
bodyBytes, err := io.ReadAll(resp.Body)
require.NoError(t, err)
require.Equal(t, 200, resp.StatusCode)
assert.Contains(t, string(bodyBytes), "sample-response")
}

Here, you can decide when you tear down your Mattermost instance and recreate it. Once per test? Once per a set of tests? It is up to you and depends strictly on your needs and the nature of your tests.

Testcontainers for Node.js

In addition to using Testcontainers for Go, Mattermost leverages Testcontainers for Node.js to set up our testing environment. In case you’re unfamiliar, Testcontainers for Node.js is a Node.js library that provides similar functionality to Testcontainers for Go. Using Testcontainers for Node.js, we can set up our environment in the same way we did with Testcontainers for Go. This allows us to write Playwright tests using JavaScript and run them in the isolated Mattermost environment created by Testcontainers, enabling us to perform integration testing that interacts directly with the plugin user interface. The code is available on GitHub.  

This approach provides the same advantages as Testcontainers for Go, and it allows us to use a more interface-based testing tool — like Playwright in this case. Let me show a bit of code with the Node.js and Playwright implementation:

We start and stop the containers for each test:

test.beforeAll(async () => { mattermost = await RunContainer() })
test.afterAll(async () => { await mattermost.stop(); })

Then we can use our Mattermost instance like any other server running to run our Playwright tests:

test.describe('sample slash command', () => {
test('try to run a sample slash command', async ({ page }) => {
const url = mattermost.url()
await login(page, url, "regularuser", "regularuser")
await expect(page.getByLabel('town square public channel')).toBeVisible();
await page.getByTestId('post_textbox').fill("/sample run")
await page.getByTestId('SendMessageButton').click();
await expect(page.getByText('Sample command result', { exact: true })).toBeVisible();
await logout(page)
});
});

With these two approaches, we can create integration tests covering the API and the interface without having to mock or use any other synthetic environment. Also, we can test things in absolute isolation because we consciously decide whether we want to reuse the Testcontainers instances. We can also reach a high degree of isolation and thereby avoid the flakiness induced by contaminated environments when doing end-to-end testing.

Examples of usage

Currently, we are using this approach for two plugins.

1. Mattermost AI Copilot

This integration helps users in their daily tasks using AI large language models (LLMs), providing things like thread and meeting summarization and context-based interrogation.

This plugin has a rich interface, so we used the Testcontainers for Node and Playwright approach to ensure we could properly test the system through the interface. Also, this plugin needs to call the AI LLM through an API. To avoid that resource-heavy task, we use an API mock, another container that simulates any API.

This approach gives us confidence in the server-side code but in the interface side as well, because we can ensure that we aren’t breaking anything during the development.

2. Mattermost MS Teams plugin

This integration is designed to connect MS Teams and Mattermost in a seamless way, synchronizing messages between both platforms.

For this plugin, we mainly need to do API calls, so we used Testcontainers for Go and directly hit the API using a client written in Go. In this case, again, our plugin depends on a third-party service: the Microsoft Graph API from Microsoft. For that, we also use an API mock, enabling us to test the whole plugin without depending on the third-party service.

We still have some integration tests with the real Teams API using the same Testcontainers infrastructure to ensure that we are properly handling the Microsoft Graph calls.

Benefits of using Testcontainers libraries

Using Testcontainers for integration testing offers benefits, such as:

Isolation: Each test runs in its own Docker container, which means that tests are completely isolated from each other. This approach prevents tests from interfering with one another and ensures that each test starts with a clean slate.

Repeatability: Because the testing environment is set up automatically, the tests are highly repeatable. This means that developers can run the tests multiple times and get the same results, which increases the reliability of the tests.

Ease of use: Testcontainers is easy to use, as it handles all the complexities of setting up and tearing down Docker containers. This allows developers to focus on writing tests rather than managing the testing environment.

Testing made easy with Testcontainers

Mattermost’s use of Testcontainers libraries for complex integration testing in their plugins is a testament to the power and versatility of Testcontainers.

By creating a well-isolated and repeatable testing environment, Mattermost ensures that our plugins are thoroughly tested and highly reliable.

Learn more

Subscribe to the Docker Newsletter. 

Visit the Testcontainers website.

Get started with Testcontainers Cloud by creating a free account.

Vote on what’s next! Check out our public roadmap.

Have questions? The Docker community is here to help.

New to Docker? Get started.

Quelle: https://blog.docker.com/feed/

A New Era at Docker: How We’re Investing in Innovation and Customer Relationships

I recently joined Docker in January as Chief Revenue Officer. My role is responsible for the entire customer journey, from your first interaction with Docker’s sales org to post-sales support and onboarding. As I speak with customers and hear stories about their journey with Docker over the past decade, I’m often reminded of the immense trust you’ve placed in us. Whether you’ve been with us from the days of Docker Swarm or have more recently started using Docker Desktop, your partnership has been invaluable in shaping who we are today. 

I want to take a moment to personally thank you for being part of our story, especially as we continue to evolve in a rapidly changing ecosystem.

We know that change can bring challenges. Over the years, as containers became the backbone of modern software development, Docker has evolved alongside them. This evolution has not always been easy and I understand that shifts in our product offerings, changes in pricing, and recent adjustments to our subscription plans have impacted many of you. Our priority now, as it always has been, is to deliver unrivaled value to you. 

We recognize that to continue innovating and addressing the complex needs of modern developers, we must continue to invest in Docker products and our relationships with customers like you. This investment isn’t just about tools and features; it’s about creating a holistic ecosystem — a unified suite — that makes your development process more productive, secure, and manageable at an enterprise scale, while building a go-to-market organization that is equipped to support our growing customer base. 

To that end, we’ve redefined our strategy to focus on a deeper, more meaningful engagement with you. We’re committed to building stronger relationships, listening carefully to your feedback, and ensuring that the solutions we bring to market truly address your pain points. By focusing on your needs, we’re working to make every interaction with Docker more valuable, whether it’s through enhanced support, new features, or better licensing management. If you’d like to discuss this with me further, I’m happy to schedule time. (Reach out by email or connect with your Account Executive to set this up.)

Additionally, we’ve made key investments in our enterprise suite of products that surrounds Docker Desktop. We understand that the demands of modern development extend beyond the individual developer’s experience. Docker is the only container-first platform built specifically for development teams, improving developer experience and productivity while meeting the security and control needs of modern enterprises. Docker offers a comprehensive suite of enterprise-ready tools, cloud services, trusted content, and a collaborative community that helps streamline workflows and maximize development efficiency.

As we continue to invest in both vectors above, we’re excited about what lies ahead in our product roadmap. Our aim is simple: to help your teams develop with confidence, knowing that Docker is a trusted partner invested in your success. I am personally dedicated to ensuring that our roadmap reflects your needs and that our solutions empower your teams to reach their full potential.

Thank you again for your continued trust and partnership. We wouldn’t be here without you, and I look forward to what we will achieve together.

Learn more

Read Announcing Upgraded Docker Plans: Simpler, More Value, Better Development and Productivity.

Subscribe to the Docker Newsletter. 

Quelle: https://blog.docker.com/feed/