Red Hat Summit 2023 Boston
CLOUD & DEVOPS
Red Hat Summit 2023 Boston
event 12/06/2023
face AGOSTINO LEONI
News, innovation, relationships, and fun
Boston has proven to be a fantastic city, perfect for hosting the annual event organized by Red Hat, dedicated to the latest news and trends in the open-source world. From May 23rd to 25th, the Red Hat Summit was a unique opportunity to learn, share, and connect with experts, customers, and partners of Red Hat, a leading company in providing open-source solutions based on Linux and Kubernetes, of which we are proud partners for many years.
Serena Cortopassi and I represented Extra Red in the "Italian" expedition to the United States, along with other long-time partners and customers of Red Hat, such as Intesa SanPaolo, Ferrari, VarGroup, VEM Sistemi, ItalGas, UnipolSai. We had the pleasant opportunity to participate in this magnificent experience, filled with technology and innovation in an extremely fertile and receptive environment. The program included over 200 sessions, including technical sessions, keynotes, workshops, hands-on labs, and interactive demos, covering various themes such as automation, hybrid cloud, edge computing, security, serverless, and much more.
Among the keywords we identified are definitely the following:
● AI: Everyone is talking about artificial intelligence, and Red Hat was no exception, with important announcements that we will discuss shortly
● Multi-Cluster: The world of applications is becoming larger and more complex. We won't have "the cluster," but many clusters that may not necessarily be homogeneous
● Security: Security is not optional; it is the foundation on which a company's software is built
● Automation: The key to managing the increasing complexity of systems
● Enablement: Facilitating developers' work by abstracting the complexities of the platform
Regarding the news presented by Red Hat, the following stand out:
● Ansible Lightspeed: An integrated service with the IBM Watson code assistant platform that allows the creation of Ansible playbooks using artificial intelligence, with instructions provided in natural language. The code is based on a specific automation foundation model trained on the vast Red Hat and IBM knowledge base, as well as the Ansible Galaxy open-source repository. Furthermore, to ensure maximum transparency, each output is associated with information about its potential source.
● Event-Driven Ansible: A solution that connects infrastructure observability tools with Ansible automation, enabling automatic actions based on events and predefined rules, providing concrete assistance in proactive monitoring. Events to be intercepted can come from various sources, including third-party tools, webhooks, or open-source software like Prometheus.
● Red Hat Service Interconnect: A tool that provides L7-level connections between applications running on different platforms, isolated from each other at the network level. The service enables secure communication between components located on two distinct clusters or a cluster and a VM in another infrastructure, offering self-service and high-level configuration capabilities to developers.
● Red Hat Developer Hub: An open-source platform for creating developer portals, based on the Backstage.io open-source project initially developed by Spotify. This platform provides advanced tools for development, including approved self-service resources aligned with corporate best practices, templates, and documentation, all in one dashboard. It aims to improve productivity, increase software quality, and reduce issues and pain points for developers. It will be released in 2023, and in the meantime, Red Hat is making the community project on which it is based, Janus IDP, available.
● Red Hat Openshift AI: A solution that integrates tools and services for developing and deploying artificial intelligence-based applications on Red Hat OpenShift. Red Hat OpenShift AI offers functionalities such as model serving, model monitoring, model explainability, and model governance.
● Red Hat Trusted Software Supply Chain: A focus on application security on OpenShift, analyzing vulnerabilities at every stage of the supply chain, from build to deploy to runtime. Red Hat offers three fully integrated tools with OpenShift and Quay (Trusted Content, Trusted Application Pipeline, and Advanced Cluster Security) to fully embrace the DevSecOps spirit.
The Summit 2023 also hosted Ansible Fest, an event dedicated to the Ansible community of users and contributors. It offered specific sessions on using Ansible for various scenarios such as cloud management, security, networking, and DevOps.
In addition to the various panels, there was an open area where Red Hat partners set up their booths. Companies such as Dynatrace, Dell, HP, Microsoft, Amazon, Elastic, Couchbase, and many others had busy days showcasing their work and technologies, along with distributing a plethora of gadgets! ?
Red Hat, on its part, organized several areas to showcase their tools, such as readily available workshops, continuous demos of community products (e.g., Janus, Konveyor, Microcks...), and the "Ask the Experts" corner, where participants could directly interact with Red Hat experts and ask questions on any topic. One particular area that impressed me was the Red Hat Edge. At that booth, various Edge and IoT projects were showcased live, demonstrating how Red Hat's technologies, its partners, and the ubiquitous AI can intervene in real-time, for example, in the labeling phase of bottles in case of errors. Simply fantastic!
There were also moments of socializing, with parties every evening, live music performances, escape rooms, quizzes, and lots of fun. Needless to say, we fully embraced the festivities!
Furthermore, as Red Hat Certified Professionals (RHCP), Serena and I had access to several dedicated meetings, such as the Red Hat Certified Professional of the Year award ceremony (won by Jasper Wiegratz, a 26-year-old German who has collected an impressive 17 certifications so far!).
In conclusion, the Red Hat Summit 2023 confirmed Red Hat's role as a leader in open-source-based technological innovation and proved to be a cornerstone in the cloud and automation landscape. It was a beautiful and extremely productive experience that provided us with a wealth of new insights and suggestions to continue our path of improvement and sharing.
Failed to "?eval" string with this error: ---begin-message--- Syntax error in ?eval-ed string in line 1, column 718: Lexical error: encountered "u" (117), after "\"Extra\\". ---end-message--- The failing expression: ==> entitiesListJson?eval [in template "20097#20123#43230" at line 59, column 29] ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign entities = entitiesListJson?eval [in template "20097#20123#43230" at line 59, column 9] ----
1<#-- Articoli in evidenza ADT -->
2<#assign portletBackground = "bg-red-white" />
3<#list portletPreferences?keys as key>
4 <#if key=="portletBackground">
5 <#assign portletBackground=portletPreferences[key]?first />
6 </#if>
7</#list>
8
9<#assign assetCategoryPropertyLocalService = serviceLocator.findService("com.liferay.asset.category.property.service.AssetCategoryPropertyLocalService") />
10<#assign categoryService = serviceLocator.findService("it.extrared.redweb.commons.service.CategoryService") />
11<#assign assetEntryLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
12<#assign dlFileEntryService = serviceLocator.findService('com.liferay.document.library.kernel.service.DLFileEntryService') />
13<#assign otherArticles = languageUtil.get(locale, "other-articles") />
14<#assign readMore = languageUtil.get(locale, "read-all") />
15
16<#assign redSimilarJournalArticle = serviceLocator.findService("it.extrared.redweb.commons.service.SimilarJournalArticle") />
17<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
18<#assign dlAppServiceUtil = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppService")/>
19
20<#assign article = "" />
21<#assign urlTitle = "" />
22
23<#assign dirtyUrlTitle = themeDisplay.getURLCurrent() />
24<#assign curPage = 1 />
25
26<#if dirtyUrlTitle?contains("redirect")>
27 <#assign namespace = "_" + paramUtil.getString(request, "p_p_id") />
28 <#assign currentUrl = "_" + paramUtil.getString(request, namespace + "_redirect") />
29 <#assign urlTitle = currentUrl?split("/")?last />
30 <#assign curPage = paramUtil.getString(request, namespace + "_cur")/>
31<#elseif dirtyUrlTitle?contains("?wkrh___tabs1=properties")>
32 <#assign last = themeDisplay.getURLCurrent()?split("/")?last />
33 <#assign urlTitle = last?substring(0, last?index_of('?wkrh___tabs1=properties')) />
34<#elseif dirtyUrlTitle?contains("?")>
35 <#assign last = themeDisplay.getURLCurrent()?split("/")?last />
36 <#assign urlTitle = last?substring(0, last?index_of('?')) />
37<#else>
38 <#assign urlTitle = themeDisplay.getURLCurrent()?split("/")?last />
39</#if>
40
41
42<#assign logfactory = staticUtil["com.liferay.portal.kernel.log.LogFactoryUtil"] />
43<#assign log = logfactory.getLog("FreemarkerLog") />
44${log.info("urlTitle: " + urlTitle)}
45
46<#attempt>
47 <#assign article = journalArticleLocalService.getArticleByUrlTitle(groupId, urlTitle) />
48<#recover>
49</#attempt>
50
51<#assign entitiesListJson = "" />
52
53<#if article?? && article?has_content>
54 <#assign entitiesListJson = redSimilarJournalArticle.getSimilarJournalArticlesWithConfig(portletPreferences, article.articleId, groupId, false, curPage?number) />
55</#if>
56
57
58<#if entitiesListJson?? && entitiesListJson?has_content>
59 <#assign entities = entitiesListJson?eval />
60</#if>
61
62<#assign noResult = languageUtil.get(locale, "no-result") />
63
64<#if entities?has_content && entities?size gt 0>
65 <section class="container-fluid bg5percent">
66 <div class="swiper container ">
67 <p class="mb-5 text-muted text-uppercase">${otherArticles}</p>
68 <div class="swiper-wrapper align-items-center pt-lg-5 mb-lg-5">
69 <#list entities?keys as k>
70 <#assign entitiesGroup=entities[k] />
71 <#if entitiesGroup?size gt 0>
72 <#list entitiesGroup as array>
73 <div class="swiper-slide">
74 <#assign urlImage = "" />
75 <#assign altImage = "" />
76 <#if array["image"]?? && array["image"]?has_content>
77 <#assign docVal=array["image"]?eval />
78 <#if docVal.url?? && docVal.url?has_content>
79 <#assign urlImage = docVal.url />
80 </#if>
81 <#assign fileEntryId = docVal.fileEntryId />
82 </#if>
83
84 <#if docVal.title?? && docVal.title?has_content>
85 <#assign altImage = docVal.title />
86 </#if>
87
88 <#assign titolo = array["articleTitle"] />
89 <#assign categories = array["categoriesString"] />
90 <#assign displayPage = array["displayPage"] />
91 <#assign assetEntryId = array["assetEntryId"] />
92 <#assign assetEntry = assetEntryLocalService.getEntry(assetEntryId) />
93 <#assign categoriesList = assetEntry.getCategories() />
94
95 <div class="col-lg-9 col-9 col-sm-9 p-0">
96 <@adaptive_media_image["img"] fileVersion=dlAppServiceUtil.getFileEntry(fileEntryId?number).getFileVersion() class="mb-4" width="100%" height="auto" alt="${altImage}"/>
97 <#--
98 <img width="100%" class="mb-4" height="auto" src="${urlImage}" alt="${altImage}" title="${titolo}">
99 -->
100 </div>
101 <div class="card-body pt-2">
102 <#if categoriesList?? && categoriesList?has_content>
103 <div class="card-subtitle text-muted">
104 <#assign categoriesString = "" />
105 <#list categoriesList as c>
106 <#assign hasProperty = categoryService.hasCategoryProperty(c.getCategoryId(), "type") />
107 <#if !hasProperty>
108 <#if !categoriesString?has_content>
109 <#assign categoriesString = c.getTitle(locale)?upper_case />
110 <#else>
111 <#assign categoriesString = categoriesString + ", " + c.getTitle(locale)?upper_case />
112 </#if>
113 </#if>
114 <#--
115 <#attempt>
116 <#assign typeProperty = assetCategoryPropertyLocalService.fetchCategoryProperty(c.categoryId?long, "type") />
117 <#recover>
118 <#if !categoriesString?has_content>
119 <#assign categoriesString = c.getTitle(locale)?upper_case />
120 <#else>
121 <#assign categoriesString = categoriesString + ", " + c.getTitle(locale)?upper_case />
122 </#if>
123 </#attempt>
124 -->
125 </#list>
126
127 ${categoriesString}
128 </div>
129 </#if>
130 <a href="${displayPage}" target="_self" title="${titolo}">
131 <h3 class="m-0">${titolo}</h3>
132 </a>
133 </div>
134 </div>
135 </#list>
136 <#else>
137 <div class="container">
138 <h2 class="m-0">${noResult}</h2>
139 </div>
140 </#if>
141 </#list>
142 </div>
143 <a data-aos="fade-right" class="pt-5 align-middle" style="display: block" href="/blog">
144 <i class="align-middle me-2 material-icons-outlined">explore</i>
145 <span class="align-middle">${readMore?capitalize}</span>
146 </a>
147 </div>
148 </section>
149</#if>