This talk is a fast-paced introduction to the Micronaut framework, from creating the first app to orchestrating a microservice federation and deploying to the cloud. We will cover the basics of writing Micronaut apps, communication between services, building for resiliency, managing configuration, and deploying to a cloud provider. By the time we’re finished, you’ll have a good understanding of the features of the framework and be ready to start building and deploying your own apps with Micronaut. Buckle up and start the countdown!
Integrate CI/CD Pipelines with Jira Software CloudAtlassian
Key development information, such as source code repositories, build servers, feature flag providers, and deployment services from CI/CD providers (both Cloud and On-premise), are now available in Jira Software Cloud.
Join Oliver Burn, Senior Architect for Jira Software Cloud, and learn how to integrate a new CI/CD system or leverage one of the many existing integrations for popular CI/CD providers. Discover how Jira Software gives teams the information they need to make faster, better decisions through continuous visibility.
Servlet vs Reactive Stacks in 5 Use CasesVMware Tanzu
ROSSEN STOYANCHEV SPRING FRAMEWORK DEVELOPER
In the past year Netflix shared a story about upgrading their main gateway serving 83 million users from Servlet-stack Zuul 1 to an async and non-blocking Netty-based Zuul 2. The results were interesting and nuanced with some major benefits as well as some trade-offs. Can mere mortal web applications make this journey and moreover should they? The best way to explore the answer is through a specific use case. In this talk we'll take 5 common use cases in web application development and explore the impact of building on Servlet and Reactive web application stacks. For reactive programming we'll use RxJava and Reactor. For the web stack we'll pit Spring MVC vs Spring WebFlux (new in Spring Framework 5.0) allowing us to move easily between the Servlet and Reactive worlds and drawing a meaningful, apples-to-apples comparison. Spring knowledge is not required and not assumed for this session.
Microservices with Java, Spring Boot and Spring CloudEberhard Wolff
Spring Boot makes creating small Java application easy - and also facilitates operations and deployment. But for Microservices need more: Because Microservices are a distributed systems issues like Service Discovery or Load Balancing must be solved. Spring Cloud adds those capabilities to Spring Boot using e.g. the Netflix stack. This talks covers Spring Boot and Spring Cloud and shows how these technologies can be used to create a complete Microservices environment.
Snyk Intro - Developer Security Essentials 2022Liran Tal
Overwhelmed with security issues in your Node.js applications? Not entirely sure how to write secure code? Join us in this workshop where you’ll learn how to improve security without being a security professional. We’ll use Snyk Code’s VS Code extension to catch and find security issues while you code, automatically fix security issues in your open source libraries, and see first-hand how to weaponize vulnerabilities to exploit working Node.js applications. You will also learn about the multiple ways of using Snyk to secure your projects, from the CLI, to CI/CD pipelines with GitHub Actions, and extend your know from secure code and secure dependencies to that of building secure containers to your Node.js apps on Docker.
A New CLI for Spring Developer ProductivityVMware Tanzu
Creating new apps based on company standards is harder than it should be. Furthermore, incrementally adding new features to that project over time is even harder with developers often cut-n-pasting code from various sources to solve the problem at hand. In this talk we introduce a new CLI for Spring developers that will help you accelerate your development all while following best practices and keeping the tooling open for change and extension by individual teams and people.
Splunk’s machine learning framework mixed with Splunk’s Event Management capabilities gives operations teams the opportunity to proactively act and automate on an event before it becomes an IT outage. This session will detail and demonstrate how to predict a health score of your business service, proactively take action based on those predictions and publish to your collaborative messaging and automation solutions.
Trunk-based Development with Feature togglesScott Nimrod
Feature branches can discourage healthy development practices. Hence, developers are discouraged from tidying code that’s unrelated to their feature. Persistent technical debt and the time required to resolve merge conflicts can and will slow a development team’s productivity.
Feature Toggles are an alternative to feature branches. Specifically, feature toggles encourage the Continuous Delivery of healthier code. Developers aren’t discouraged from tidying code that’s unrelated to their feature. In addition, merge conflicts are almost non-existent when developers continuously integrate their updates throughout the day.
Scott Nimrod addresses how feature toggles can be implemented using a functional programming language and then identifies the costs of using them.
The target audience for this talk are application developers, DevOps engineers, and project managers.
Integrate CI/CD Pipelines with Jira Software CloudAtlassian
Key development information, such as source code repositories, build servers, feature flag providers, and deployment services from CI/CD providers (both Cloud and On-premise), are now available in Jira Software Cloud.
Join Oliver Burn, Senior Architect for Jira Software Cloud, and learn how to integrate a new CI/CD system or leverage one of the many existing integrations for popular CI/CD providers. Discover how Jira Software gives teams the information they need to make faster, better decisions through continuous visibility.
Servlet vs Reactive Stacks in 5 Use CasesVMware Tanzu
ROSSEN STOYANCHEV SPRING FRAMEWORK DEVELOPER
In the past year Netflix shared a story about upgrading their main gateway serving 83 million users from Servlet-stack Zuul 1 to an async and non-blocking Netty-based Zuul 2. The results were interesting and nuanced with some major benefits as well as some trade-offs. Can mere mortal web applications make this journey and moreover should they? The best way to explore the answer is through a specific use case. In this talk we'll take 5 common use cases in web application development and explore the impact of building on Servlet and Reactive web application stacks. For reactive programming we'll use RxJava and Reactor. For the web stack we'll pit Spring MVC vs Spring WebFlux (new in Spring Framework 5.0) allowing us to move easily between the Servlet and Reactive worlds and drawing a meaningful, apples-to-apples comparison. Spring knowledge is not required and not assumed for this session.
Microservices with Java, Spring Boot and Spring CloudEberhard Wolff
Spring Boot makes creating small Java application easy - and also facilitates operations and deployment. But for Microservices need more: Because Microservices are a distributed systems issues like Service Discovery or Load Balancing must be solved. Spring Cloud adds those capabilities to Spring Boot using e.g. the Netflix stack. This talks covers Spring Boot and Spring Cloud and shows how these technologies can be used to create a complete Microservices environment.
Snyk Intro - Developer Security Essentials 2022Liran Tal
Overwhelmed with security issues in your Node.js applications? Not entirely sure how to write secure code? Join us in this workshop where you’ll learn how to improve security without being a security professional. We’ll use Snyk Code’s VS Code extension to catch and find security issues while you code, automatically fix security issues in your open source libraries, and see first-hand how to weaponize vulnerabilities to exploit working Node.js applications. You will also learn about the multiple ways of using Snyk to secure your projects, from the CLI, to CI/CD pipelines with GitHub Actions, and extend your know from secure code and secure dependencies to that of building secure containers to your Node.js apps on Docker.
A New CLI for Spring Developer ProductivityVMware Tanzu
Creating new apps based on company standards is harder than it should be. Furthermore, incrementally adding new features to that project over time is even harder with developers often cut-n-pasting code from various sources to solve the problem at hand. In this talk we introduce a new CLI for Spring developers that will help you accelerate your development all while following best practices and keeping the tooling open for change and extension by individual teams and people.
Splunk’s machine learning framework mixed with Splunk’s Event Management capabilities gives operations teams the opportunity to proactively act and automate on an event before it becomes an IT outage. This session will detail and demonstrate how to predict a health score of your business service, proactively take action based on those predictions and publish to your collaborative messaging and automation solutions.
Trunk-based Development with Feature togglesScott Nimrod
Feature branches can discourage healthy development practices. Hence, developers are discouraged from tidying code that’s unrelated to their feature. Persistent technical debt and the time required to resolve merge conflicts can and will slow a development team’s productivity.
Feature Toggles are an alternative to feature branches. Specifically, feature toggles encourage the Continuous Delivery of healthier code. Developers aren’t discouraged from tidying code that’s unrelated to their feature. In addition, merge conflicts are almost non-existent when developers continuously integrate their updates throughout the day.
Scott Nimrod addresses how feature toggles can be implemented using a functional programming language and then identifies the costs of using them.
The target audience for this talk are application developers, DevOps engineers, and project managers.
In this session we will be learning Bitbucket features, defining branching strategies, automating build,test, release and deployment process. Further will be creating multibranch pipelines.
In this quality assurance training session, you will learn JIRA. Topics covered in this course are:
• What is JIRA?
• JIRA Scheme
• JIRA Issues & Types
• Issue Types
• JIRA Components
• Priority
• Jira Workflow
TO know more, visit this link: https://www.mindsmapped.com/courses/quality-assurance/get-practical-training-on-software-testing-quality-assurance-qa/
Привет, Санкт-Петербург!
В этот раз мы решили провести встречу, посвященную Confluence и CI/CD. К нам в гости приедут из Atlassian Антон Шалеев (Амстердам), чтобы поделиться практиками Blueprint, и Антон Генкин, product manager (Сидней) расскажет про "DevOps философия Atlassian: люди, процессы, инструменты".
После обсуждения докладов оба согласились провести небольшую сессию вопросов-ответов.
Просим взять какой-либо документ на мероприятие, в связи с пропускным режимом.
Место встречи: Selectel, Цветочная ул., 21 лит. А.
Если у вас вопросы задавайте в канале Telegram: https://t.me/augspb
Chaos Engineering - The Art of Breaking Things in ProductionKeet Sugathadasa
This is an introduction to Chaos Engineering - the Art of Breaking things in Production. This is conducted by two Site Reliability Engineers which explains the concepts, history, principles along with a demonstration of Chaos Engineering
The technical talk is given in this video: https://youtu.be/GMwtQYFlojU
CQRS and Event Sourcing, An Alternative Architecture for DDDDennis Doomen
Most of us will be familiar with the standard 3- or 4-layer architecture you often see in larger enterprise systems. Some are already practicing Domain Driven Design and work together with the business to clarify the domain concepts. Perhaps you’ve noticed that is difficult to get the intention of the 'verbs' from that domain into this standard architecture. If performance is an important requirement as well, then you might have discovered that an Object-Relational Mapper and a relational database are not always the best solution.
One of the main reasons for this is the fact that the interests of a consistent domain that takes into account the many business rules, and those of data reporting and presentation are conflicting. That’s why Betrand Meyer introduced the Command Query Separation principle.
An architecture based on this principle combined with the Event Sourcing concept provides the ideal architecture for building high-performance systems designed using DDD. Well-known bloggers like Udi Dahan and Greg Young have already spent quite a lot of of posts on this, and this year’s Developer Days had some coverage as well.
But how do you build such a system with the. NET framework? Is it really as complex as some claim, or is just different work?
Scholarly communicationand evaluation: from bibliometrics to altmetricsStefanie Haustein
presentation at COAR-SPARC Conference 2015, Porto, Portugal, 16 April 2015
Session 4: Assessing Value
Chair: Lars Björnshauge
https://www.coar-repositories.org/community/events/annual-meeting-2015/programme/
Are you trying to change your company IT Department's persistence paradigm from OOP => RDBMS to OOP => NoSQLDb? Want to benefit of DDD+CQRS+EVS in your enterprise-class distributed application but don't know where to start?
Look at this...
In this session we will be learning Bitbucket features, defining branching strategies, automating build,test, release and deployment process. Further will be creating multibranch pipelines.
In this quality assurance training session, you will learn JIRA. Topics covered in this course are:
• What is JIRA?
• JIRA Scheme
• JIRA Issues & Types
• Issue Types
• JIRA Components
• Priority
• Jira Workflow
TO know more, visit this link: https://www.mindsmapped.com/courses/quality-assurance/get-practical-training-on-software-testing-quality-assurance-qa/
Привет, Санкт-Петербург!
В этот раз мы решили провести встречу, посвященную Confluence и CI/CD. К нам в гости приедут из Atlassian Антон Шалеев (Амстердам), чтобы поделиться практиками Blueprint, и Антон Генкин, product manager (Сидней) расскажет про "DevOps философия Atlassian: люди, процессы, инструменты".
После обсуждения докладов оба согласились провести небольшую сессию вопросов-ответов.
Просим взять какой-либо документ на мероприятие, в связи с пропускным режимом.
Место встречи: Selectel, Цветочная ул., 21 лит. А.
Если у вас вопросы задавайте в канале Telegram: https://t.me/augspb
Chaos Engineering - The Art of Breaking Things in ProductionKeet Sugathadasa
This is an introduction to Chaos Engineering - the Art of Breaking things in Production. This is conducted by two Site Reliability Engineers which explains the concepts, history, principles along with a demonstration of Chaos Engineering
The technical talk is given in this video: https://youtu.be/GMwtQYFlojU
CQRS and Event Sourcing, An Alternative Architecture for DDDDennis Doomen
Most of us will be familiar with the standard 3- or 4-layer architecture you often see in larger enterprise systems. Some are already practicing Domain Driven Design and work together with the business to clarify the domain concepts. Perhaps you’ve noticed that is difficult to get the intention of the 'verbs' from that domain into this standard architecture. If performance is an important requirement as well, then you might have discovered that an Object-Relational Mapper and a relational database are not always the best solution.
One of the main reasons for this is the fact that the interests of a consistent domain that takes into account the many business rules, and those of data reporting and presentation are conflicting. That’s why Betrand Meyer introduced the Command Query Separation principle.
An architecture based on this principle combined with the Event Sourcing concept provides the ideal architecture for building high-performance systems designed using DDD. Well-known bloggers like Udi Dahan and Greg Young have already spent quite a lot of of posts on this, and this year’s Developer Days had some coverage as well.
But how do you build such a system with the. NET framework? Is it really as complex as some claim, or is just different work?
Scholarly communicationand evaluation: from bibliometrics to altmetricsStefanie Haustein
presentation at COAR-SPARC Conference 2015, Porto, Portugal, 16 April 2015
Session 4: Assessing Value
Chair: Lars Björnshauge
https://www.coar-repositories.org/community/events/annual-meeting-2015/programme/
Are you trying to change your company IT Department's persistence paradigm from OOP => RDBMS to OOP => NoSQLDb? Want to benefit of DDD+CQRS+EVS in your enterprise-class distributed application but don't know where to start?
Look at this...
Spring Boot - Microservice Metrics MonitoringDonghuKIM2
마이크로서비스 아키텍쳐에서의 분산된 서비스간의 모니터링 방법을 소개합니다.
- Microservice Monitoring with Service Discovery (Eureka) Spring Boot Admin
- Microservice Monitoring with Service Discovery (Consul), Prometheus, Grafana
Cassandra Summit 2014: Highly Scalable Web Application in the Cloud with Cass...DataStax Academy
Presenters, L
Putting together a cloud based web application that allows end users to upload, encode, manage and distribute video media files is not a difficult task these days. Especially with the number of related frameworks and services available, ready to be used or consumed. The situation gets more complex when the expected traffic is in the millions-of-users range, globally distributed, and requiring detailed monitoring for usage. Using this scenario, in this session you will learn how to use the recently updated Datastax C# Cassandra driver, how to deploy a multi-datacenter Cassandra cluster using the Microsoft Azure platform that can be accessed from different programming languages, and how to leverage existing cloud services to perform some of the tasks associated with this use case.
KUBEBOOT - SPRING BOOT DEPLOYMENT ON KUBERNETES HAS NEVER BEEN SO EASYRed Hat Developers
Have you ever thought how to deploy Cloud Native Java Applications (Spring Boot) on Kubernetes? Kubernetes has now become a de-facto standard for deploying Cloud Native Applications, but still there is myth that they are not ready for Java workloads. The aim of this session is to break that myth to show Kubernetes is well suited for Cloud Native Java applications. The session starts with a brief history of Microservices; the framework, the libraries, the platform and the tools that have been part of every cloud native applications and how they become deprecated with Cloud Native Java applications deployed to Kubernetes. The session explores the cloud native characteristics such as Discovery, Blue/Green Deployments, Elasticity, Canary Deployments, Resiliency, Pipeline(CI/CD), Authentication etc., becomes implicit characteristics to your Spring Boot Java applications that are deployed on Kubernetes/OpenShift. In this session, we will see how to build, debug, deploy and discover Spring Boot applications on Kubernetes, covering in depth details of the tools, libraries and platform that could be used to make your spring boot deployment smooth and easy.
Kubernetes is exploding in popularity right now and has all the buzz and cargo-culting that Docker enjoyed just a few years ago. But what even is Kubernetes? How do I run my PHP apps in it? Should I run my PHP apps in it ?
Microservices and containers for the unitiatedKevin Lee
In this presentation I provide a high level explanation of why applications are now being developed using in a Microservice architecture. I look at how Microservice applications are typically developed and deployed using container technology and look at some of the challenges of using container technology for applications in production.
Sydney based cloud consultancy Cloudten's Richard Tomkinson shows how masterless Puppet can be used in concert with AWS's services including Lambda to automate server builds and manage code deployments
At this joint NYC Cloud Foundry and NY PHP meetup, we'll discuss the shift to Platform-as-a-Service and what it means for PHP development on the cloud.
First, we'll take a look at the "traditional" cloud Infrastructure-as-a-Service (virtual servers and disks) model and describe how Platform-as-a-Service builds upon it to provide the runtimes and data services for hosting PHP applications.
We'll then demonstrate how a PHP developer can use buildpacks and services within a Cloud Foundry PaaS to deploy scalable and resilient apps to his or her cloud of choice.
Along the way we'll compare the variety of buildpacks available to PHP developers, show techniques for binding to services, and highlight best practices for creating born-on-the-cloud apps based on a microservices architecture.
Special thanks to Dan Mikusa for helping with the buildpack comparison.
PHP developers: Please give all three build packs a try. Provide your feedback and submit pull requests on GitHub.
Native Cloud-Native: Building Agile Microservices with the Micronaut FrameworkZachary Klein
This talk is a fast-paced introduction to the Micronaut framework, from creating the first app to orchestrating a microservice federation and deploying to the cloud. We will cover the basics of writing Micronaut apps, communication between services, building for resiliency, managing configuration, and deploying to a cloud provider. By the time we’re finished, you’ll have a good understanding of both the distinctives and features of the framework and be ready to start building and deploying your own apps with Micronaut. Buckle up!
Sample code: https://github.com/ZacharyKlein/hello-devnexus23
Groovy-Powered Microservices with MicronautZachary Klein
The Micronaut Framework makes building performant microservices and serverless applications with Groovy not only practical, but enjoyable! Using AST transformations and AOT compilation, Micronaut helps Groovy to shine by reducing the runtime overhead incurred by traditional frameworks, and this, together with Groovy's support for static compilation, allows you to play your favorite JVM languages to its strengths without compromising runtime performance. Come learn how Micronaut can help make your next cloud, serverless or IOT project a Groovy reality!
In an era of microservices and cloud computing, Micronaut incorporates support for cloud-friendly reliability patterns - from load balancing and circuit breakers to shared configuration and service discovery - and makes these features available and easily configurable from within your application. From the ground up, Micronaut applications are "natively" cloud-native.
The Micronaut framework values at the core, enabling code simplicity and developer productivity. Micronaut offers many additional features for a new class of applications (e.g., microservices, serverless deployments, etc.) that may not be well-suited for monoliths.
Grails 4 takes the powerful and flexibility of the Grails framework to a new level, with the latest versions of core frameworks like Spring 5.1, Spring Boot 2.1, Gradle 5, and Groovy 2.5. Additionally, Micronaut is now part of the Grails foundation, allowing many powerful features from Micronaut to be used natively within your Grails apps. In this talk, we’ll look at how you can upgrade your Grails 3 project (with a little aside for Grails 2 projects as well) to Grails 4, and get a taste of the new features at your disposal in this exciting new release.
Getting Groovy with JHipster and MicronautZachary Klein
JHipster is a rapid development platform that makes it easy to build modern JavaScript frontends backed by JVM microservices, including support for Micronaut. This allows you to produce microservice or monolith projects quickly, with plenty of customization options and a project structure that illustrates best practices when developing with Micronaut. As Micronaut is a JVM framework, it is compatible with Groovy, making it easy to use the Groovy language for tests (with Spock) and for general purpose application code, even within standard Java project.
Groovy is a powerful, agile and dynamic language for the Java platform. Groovy has a Java like syntax along with many features inspired by languages such as Python, Ruby and Smalltalk. The language has been embraced by popular frameworks including Grails, Micronaut, Spring Boot and many others. This session covers a lot of ground to quickly get Java developers started with Groovy including many interactive examples to highlight the powerful language features that make Groovy compelling. This session is targeted to demonstrate the power of Groovy and help Java developers understand how to leverage that power in their enterprise applications.
Single Page App (SPA) frameworks offer many benefits over traditional web apps which do all of their HTML generation on the server side. Popular SPA frameworks include Vue, React and Angular. Micronaut is very well suited for publishing REST APIs and is a terrific fit for implementing backend logic for SPAs.
Grails Launchpad - From Ground Zero to OrbitZachary Klein
Building upon Spring Boot, Grails offers a slew of developer-productivity enhancements without sacrificing any of the benefits of “vanilla” Boot. Whether you're altogether new to Grails, or your last Grails project was a 1.x-era scaffolding app, this workshop will help you (re)discover the power and agility of this dynamic web framework.
We'll start from scratch with the latest version of Grails and showcase the latest tools and tricks that the framework has to offer, starting with the MVC basics and scaling up to newer and/or more advanced features, including Interceptors, RESTful APIs, SPAs, Angular scaffolding, Multi-tenancy, and GraphQL schema generation.
Room with a Vue - Introduction to Vue.jsZachary Klein
Angular has brought MVC & dependency injection to the browser, while React nudges developers towards a simpler, functional approach to view rendering. What if there was a tool that took the best ideas from both of these titans, giving us simple, expressive components while still including enough “magic” to significantly boost developer productivity?
Enter Vue.js
In this talk we’ll get to know this new kid on the frontend block, contrast Vue with it’s better known rivals. We’ll explore the ecosystem: state management with Vuex, routing with Vue-router - and see why Vue.js might not be just another JavaScript framework.
A single-page application means putting a lot of traditionally server-side internals in the great unknown of a client's browser. The move of data and logic towards frontend requires a different model for application security. In addition to old foes like cross-site scripting, we now have to consider concepts like local storage, routing, JWTs and OAuth2 frameworks, and understand their implications in locking down our apps. Let's clear up the confusion and zero in on thew approaches and techniques you need to secure your React app.
We'll examine several layers of security relevant to React apps, including UI-level security (preventing XSS attacks and securing routes with React Router and Higher-Order Components), and API security using JWTs and third-party authentication-providers.
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Search and Society: Reimagining Information Access for Radical FuturesBhaskar Mitra
The field of Information retrieval (IR) is currently undergoing a transformative shift, at least partly due to the emerging applications of generative AI to information access. In this talk, we will deliberate on the sociotechnical implications of generative AI for information access. We will argue that there is both a critical necessity and an exciting opportunity for the IR community to re-center our research agendas on societal needs while dismantling the artificial separation between the work on fairness, accountability, transparency, and ethics in IR and the rest of IR research. Instead of adopting a reactionary strategy of trying to mitigate potential social harms from emerging technologies, the community should aim to proactively set the research agenda for the kinds of systems we should build inspired by diverse explicitly stated sociotechnical imaginaries. The sociotechnical imaginaries that underpin the design and development of information access technologies needs to be explicitly articulated, and we need to develop theories of change in context of these diverse perspectives. Our guiding future imaginaries must be informed by other academic fields, such as democratic theory and critical theory, and should be co-developed with social science scholars, legal scholars, civil rights and social justice activists, and artists, among others.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
2. ABOUT ME
• Senior Software Engineer at
OCI
• Full stack!
• Contributor to the Grails &
Micronaut frameworks
• Beth’s husband
3.
4. • Micronaut announced in March 2018
• Framework open-sourced in May 2018,
1.0 release in October 2018
• Triggered a wave of excitement and
innovation around the potential for JVM
development
• Micronaut 1.3 & Micronaut Data 1.0
released in February 2020
• Micronaut continues to point the path
forwards for server-side Java
WHAT IS MICRONAUT?
5. WHAT IS MICRONAUT?
• A framework for microservice &
serverless applications
• Ahead Of Time (AOT) for DI,AOP, and
configuration injection
• Reactive HTTP layer built on Netty
• Declarative HTTP Client
• “Natively Cloud Native”
• A suite of official and community-
contributed integrations and libraries
6. WHAT CANYOU BUILD?
• Microservices
• Serverless Applications
• Message-Driven Applications with
Kafka/Rabbit
• CLI Applications
• Android Applications
• Anything with
static void main(String..args)
7. WHAT MAKES IT DIFFERENT?
• An Application Framework for the Future
• Ahead ofTime (AOT) Compilation
• No Reflection, Runtime Proxies, or Dynamic
Classloading
• Compatible with GraalVM
• Reactive
• Capable of running in low-memory
environments with sub second startup time
• First-class support for Java, Kotlin, and Groovy
8. WHAT MAKES IT DIFFERENT?
• Micronaut 1.3 - Cold Start:
• JDK 13 (no flags): ~800ms
• GraalVM native image: ~15ms
• Micronaut 1.3 - Memory:
• JDK 13: ~100mb
• GraalVM native image: ~15mb
10. INSTALLINGTHE CLI
https://micronaut.io/download.html
• The Micronaut CLI is the
recommended method for creating
Micronaut apps
• Micronaut can also be added to an
existing project via Maven/Gradle
dependency
• Micronaut team recommends
SDKman for installing CLI, but other
options are available
• CLI can generate projects in Java,
Kotlin, Groovy, using Maven or
Gradle build files
11. INSTALLINGTHE CLI
1. Before continuing make sure you have latest version of SDKMAN
installed (https://sdkman.io/).
2. In order to install Micronaut, run following command:
3.You can also specify the version to the sdk install command.
4.You should now be able to run the Micronaut CLI.
$ mn
| Starting interactive mode...
| Enter a command name to run. Use TAB for completion:
mn>
$ sdk install micronaut 1.3.1
$ sdk install micronaut
$ sdk update
https://docs.micronaut.io/latest/guide/index.html#installSdkman
12. CREATING A SERVICE
mn> help
Usage: mn [-hnvVx] [COMMAND]
Micronaut CLI command line interface for generating projects and
services.
Commonly used commands are:
create-app NAME
create-cli-app NAME
create-federation NAME --services SERVICE_NAME[,SERVICE_NAME]...
create-function NAME
13. $ mn create-app service-a
| Generating Java project...
| Application created at /Users/dev/service-a
$ mn create-app example.micronaut.service-b
| Generating Java project...
| Application created at /Users/dev/service-b
Creating a Java app
Creating a Java app with default package
$ mn create-app service-k --lang kotlin --features tracing-jaeger
| Generating Kotlin project...
| Application created at /Users/dev/service-k
Creating a Kotlin app with features
14. CREATING A FEDERATION
The create-federation command applies the same
features/profiles to multiple projects, and creates a multi-
project (Gradle) or multi-module (Maven) build file.
$ mn create-federation kafka-fed --services service-a, service-b,
service-c --profile kafka
| Federation created at /Users/dev/kafka-federation
| Generating Java project…
| Generating Java project…
| Generating Java project...
15. POWER ON
$ cd service-a
$ ./gradlew run
> Task :run
[main] INFO io.micronaut.runtime.Micronaut - Startup completed in
955ms. Server Running: http://localhost:8080
$./mvnw compile exec:exec
[INFO] --- exec-maven-plugin:1.6.0:exec (default-cli) @ service-a ---
[main] INFO io.micronaut.runtime.Micronaut - Startup completed in
778ms. Server Running: http://localhost:8080
16. HOT RESTART
1. Enable with micronaut.io.watch.restart: true in
configuration properties
2. Run Gradle or Maven (via shell script) in
continuous build mode
(Alternatively, an external library like JRebel or Spring Loaded can be used -
the CLI includes features for all of these options)
18. HOT RESTART
$ gradle run --continuous
#!/usr/bin/env sh
while true; do
./mvn compile exec:exec
sleep 1s
done
With file-watch enabled, run Gradle in continuous build mode…
If using Maven, a simple shell script accomplishes the same goal.
The result: the Micronaut application is restarted when a file change is
detected, making development time changes a breeze!
19. HELLO WORLD
package example.micronaut;
import io.micronaut.http.MediaType;
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Get;
import io.micronaut.http.annotation.Produces;
@Controller("/hello")
public class HelloController {
@Get
@Produces(MediaType.TEXT_PLAIN)
public String index() {
return "Hello World";
}
}
src/main/java/example/micronaut/HelloController.java
20. TEST FLIGHT
@MicronautTest
public class HelloControllerTest {
@Inject @Client(“/") RxHttpClient client;
@Test public void testHello() {
HttpRequest<String> request = HttpRequest.GET("/hello");
String body = client.toBlocking().retrieve(request);
assertNotNull(body);
assertEquals("Hello World", body);
}
}
src/test/java/example/micronaut/HelloControllerTest.java
$ ./gradlew test
$ open build/reports/tests/test/index.html
Running tests and viewing results:
21. DEPENDENCY INJECTION
• Micronaut’s DI implements JSR 330 (javax.inject annotations)
• Beans can be injected via @Inject or as constructor arguments
• At compile-time, Micronaut analyzes your classes and generates bean
definition classes that implement the required DI logic
• Aspect Oriented Programming (AOP) capabilities are analyzed and
generated in the same way
• The result: runtime reflection and reading/caching of metadata is
avoided, leading to drastic improvements in startup and memory
usage
22. DEPENDENCY INJECTION
@Singleton //Bean definition generated at compile time
class WeatherService {
Integer currentTemp() { //... }
}
@Controller('/weather')
class WeatherController {
@Inject WeatherService weatherService
//DI computed at compile time
@Get("/")
HttpResponse<Integer> currentTemp() {
HttpResponse.ok(weatherService.currentTemp())
}
}
23. DEPENDENCY INJECTION
• Micronaut creates and manages a BeanContext
• In addition to beans, Optionals, Iterables, Streams, Arrays & Providers
can also be injected
• Qualifiers can be applied to injected beans (e.g, @Named)
• Bean scopes as specified by JSR 330 (@Singleton, @RequestScope,
@Refreshable, @ThreadLocal, etc)
• Bean instantiation can be made @Conditional (on configuration, other
beans, etc) and @Fallbacks can be specified when a bean cannot be
created
24. CLIENTS
@Client("/hello")
public interface HelloClient {
@Get
String hello();
}
src/main/java/example/micronaut/HelloClient.java
@Inject HelloClient client();
public String greeting() {
return client.hello();
}
Client can now be injected and called:
26. SERVICE DISCOVERY
• Micronaut supports multiple approaches to service discovery:
• DNS-based configuration
• Standalone discovery server (e.g, Consul, Eureka, ZooKeeper)
• Delegation to a cloud provider (e.g.,AWS Route 53)
• Delegation to a container runtime (e.g, Kubernetes)
• Micronaut abstracts the integration with specific service discovery registries
through a DiscoveryClient interface
• When multiple instances of a given service are registered, Micronaut will
automatically load-balance between them
32. RETRYING & CIRCUIT BREAKERS
• Micronaut provides annotations to specify behavior when a
method call fails (such as a loss of connection with another service)
• @Retryable indicates that the method call should be re-attempted
for a configurable number of times, before throwing an exception
@Retryable(
attempts = “5",
delay = “2s"
)
public Book findBook(String title) { //...
@Retryable(attempts = "${book.retry.attempts:3}",
delay = "${book.retry.delay:1s}" )
33. RETRYING & CIRCUIT BREAKERS
• @CircuitBreaker is a variation of @Retryable which (after a set
number of failures) will instantly re-throw the exception without
waiting for the method to fail.
• This allows an external service or resource time to recover (e.g,
an overloaded database server)
@CircuitBreaker(
attempts = “5",
delay = “2s”
reset = “30s”
)
public Book findBook(String title) { //...
34. CONFIGURATION
Micronaut apps can accept configuration from a variety of
sources:
• Configuration files (accepted formats are properties files,YAML,
JSON, Groovy; e.g: /src/main/resources/application.yml)
• System properties/Environment variables
• Distributed configuration (e.g Consul, Spring Cloud Config,
AWS Parameter Store)
36. CONFIGURATION
@Singleton
public class EngineImpl implements Engine {
@Value("${my.engine.cylinders:6}")
protected int cylinders;
//...
}
src/main/java/EngineImpl.java
@Value("http://${my.host}:${my.port}")
URL url;
@Value("${my.url:`http://foo.com`}")
URL url;
Multiple placeholders
Default value
37. CONFIGURATION PROPERTIES
team:
name: 'Steelers'
color: 'Black'
player-names:
- 'Mason Rudolph'
- 'James Connor'
src/main/resources/application.yml
@ConfigurationProperties("team")
public class TeamConfiguration {
private String name;
private String color;
private List<String> playerNames;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public List<String> getPlayerNames() {
return playerNames;
}
public void setPlayerNames(List<String> playerNames) {
this.playerNames = playerNames;
}
}
https://guides.micronaut.io/micronaut-configuration
src/main/java/TeamConfiguration.java
@Inject
TeamConfiguration config;
@Get
public String index() {
return config.getName();
}
src/main/java/TeamController.java
The above config can now be
injected as a configuration bean:
38. DISTRIBUTED CONFIGURATION
• Micronaut provides a ConfigurationClient
interface which can resolve config from
distributed (cloud) sources
• Integrations available for Consul,Vault,
Spring Cloud Config, and AWS Parameter
Store Support
• Can be setup via a CLI feature or
manually
39. DISTRIBUTED CONFIGURATION
$ mn create-app service-a --features config-consul
…or add the configuration manually in a file named bootstrap.yml:
micronaut:
application:
name: service-a
config-client:
enabled: true
consul:
client:
defaultZone: "${CONSUL_HOST:localhost}:${CONSUL_PORT:8500}"
src/main/resources/bootstrap.yml
$ curl -X PUT -d @- localhost:8500/v1/kv/config/application/foo.bar <<< myvalue
We can now populate our Consul config service - the key foo.bar will contain the value myvalue
40. MONITORING
• Micronaut’s management module provides endpoint for health checks and other
monitoring needs
• Also provides API for implementing custom health checks and endpoints
• Built-in endpoints include:
• /beans — Returns loaded bean definitions from the application context
• /info — Returns static information from the application state
• /health — Returns information about the health of the application
• /metrics — Return application metrics *
• /routes — Returns available URIs in the application
• /loggers — Returns available loggers and allows change of log level
• /stop — Shuts down server on receiving a POST request
* Requires additional Micrometer metrics dependency
41. MONITORING
$ mn create-app service-a --features management
implementation 'io.micronaut:micronaut-management'
build.gradle
…or add dependency manually:
micronaut:
security:
enabled: true
endpoints:
beans:
enabled: true
sensitive: true
info:
enabled: true
sensitive: false
src/main/resources/application.yml
If the micronaut-security
dependency is loaded, endpoints can
be marked as “sensitive” to secure
private information
https://micronaut-projects.github.io/micronaut-security
43. DISTRIBUTEDTRACING
• Micronaut provides distributed tracing
support for the OpenTracing spec (any
implementation)
• Allows “spans” to be defined at the
method and class-level via annotations
• Also defines an instance of the
io.opentracing.Tracer interface for
complete functionality
• Integration with Jaeger and Zipkin
available via CLI features
45. DISTRIBUTEDTRACING
@NewSpan("productList")
List<Product> productList() {
//Get products
}
@ContinueSpan
@Get(“/{id}”)
HttpResponse<Product> show(Long id) {
//Get product
}
@Get("/{productNumber}")
HttpResponse<Integer> hits(
@SpanTag("product") String product
) {}
• @NewSpan begins a new
tracing segment at this
method
• @ContinueSpan includes
this method within the
current span
• @SpanTag allows metadata
to be added to the (new
or current) span
46. DISTRIBUTEDTRACING
import io.opentracing.Tracer
import javax.inject.Inject
import javax.inject.Singleton
@Singleton
class StorefrontService {
@Inject
Tracer tracer
@NewSpan("productList")
List<ProductDetails> productList() {
products = //Get products
tracer.activeSpan().setTag("count", products.size())
products
}
Micronaut defines an instance of OpenTracing’s Tracer interface as a bean
48. API DOCUMENTATION
• Micronaut can generate OpenAPI (Swagger)YAML
definitions at compilation time
• Standard Micronaut annotations (@Controller, @Get,
@Consumes, etc) and method return types (POJOs) will be
analyzed and corresponding SwaggerYML written to the file
• Standard Swagger annotations can be used to customize/
override the generatedYAML
• Micronaut can handle merging of OpenAPI schemas from
multiple modules (e.g., when using Micronaut Security)
49. API DOCUMENTATION
$ mn create-app service-a --features swagger-java
annotationProcessor("io.micronaut.configuration:micronaut-openapi:1.4.0")
implementation("io.swagger.core.v3:swagger-annotations:1.4.0")
build.gradle …or add dependencies manually:
@OpenAPIDefinition(
info = @Info(
title = "Hello World",
version = "0.0",
description = "My API",
license = @License(name = "Apache 2.0", url = "http://foo.bar"),
contact = @Contact(
url = "http://gigantic-server.com",
name = "Fred",
email = “Fred@gigagantic-server.com"
)
)
)
src/main/java/Application.java
Add an @OpenAPIDefinition
for your app:
51. MICRONAUT SPRING
https://micronaut-projects.github.io/micronaut-spring/latest/
• Allows Spring components to be integrated into Micronaut
apps*
• Allows a Spring app to be run as a Micronaut app
• Expose Micronaut beans to a Spring app
• At compilation time, Micronaut maps supported Spring
annotations to corresponding Micronaut ones
• Certain Spring interfaces are also mapped at compile time and
can be used (ApplicationContext, Environment, BeanFactory, etc)
52. MICRONAUT SPRING
https://micronaut-projects.github.io/micronaut-spring/latest/
• Micronaut for Spring can serve as a “parent context”
for a Spring app, making components written in
Micronaut (e.g, the Kafka client, Discovery client, etc)
available to the Spring context
• Most Spring Boot annotations are supported
(@ConfigurationProperties, @ConditionalOn*, @Endpoint)
• Limitations:AspectJ, SpEL, and Servlet API are not
supported by Micronaut
53. MICRONAUT DATA
https://micronaut-projects.github.io/micronaut-data/latest
• A persistence framework written especially for Micronaut
• Uses AOT compilation to pre-compute queries, provide
type-checking
• No runtime reflection, no in-memory model, and no
runtime query generation
• Supports Reactive query execution (Publisher or RxJava)
56. BUILDING FOR PRODUCTION
• Micronaut apps can be built as “fat” (or “uber”) JAR
files using the Gradle Shadow Jar plugin or Maven
Shade plugin (provided automatically by the CLI).
$ ./gradlew shadowJar
$ ./mvnw package
$ java -jar build/libs/service-a-all.jar
Application can now be deployed as a runnable JAR:
57. GRAALVM
• GraalVM is an alternativeVM that
provides native image capability and
minimal overhead
• Micronaut applications can be
configured to run within a GraalVM
native image using a provided script
• Micronaut’s avoidance of reflection
makes it a perfect choice for apps
targeting GraalVM
58. GRAALVM
$ mn create-app service-a --features graal-native-image
Use the CLI feature to generate config and Dockerfile:
$ ./gradlew assemble
$ ./docker-build.sh
Build JAR file and run the provided build script to build image:
$ docker run -p 8080:8080 micronaut-graal-app
10:29:46.845 [main] INFO io.micronaut.runtime.Micronaut - Startup completed
in 12ms. Server Running: http://localhost:8080
The application can now be run by executing the native image:
59. TOTHE CLOUD
• Micronaut provides integration and
environment-detection for numerous cloud
platforms
• Cloud-specific configuration can be applied
with application-[provider].yml files (e.g.,
application-gcp.yml)
• Can also use Groovy config files if imperative
logic is required - e.g, obtaining values from a
distributed config server
60. AMAZON WEB SERVICES
https://guides.micronaut.io/micronaut-elasticbeanstalk
• Micronaut supports AWS specific
configuration (e.g, application-aws.yml files)
• Also includes a CLI profile for creating AWS
Lambda applications (functions)
• Consult Micronaut Guides website for
tutorials on deploying to AWS Elastic
Beanstalk and Lambda
https://guides.micronaut.io/micronaut-function-graalvm-aws-lambda-gateway
61. MICROSOFT AZURE
https://github.com/microsoft/azure-maven-plugins
• Micronaut supports Azure specific
configuration (e.g, application-azure.yml files)
• Microsoft provides a Maven plugin to facilitate
Azure deployments (community-supported
Gradle plugin also available)
• Consult Micronaut Guides website for
tutorials on deploying to Microsoft Azure
https://guides.micronaut.io/micronaut-azure-cloud/guide/index.html
62. GOOGLE CLOUD
• (Assuming a properly configured GCP
project)
• The simplest approach is to use
Google’s own App Engine Gradle Plugin
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.google.cloud.tools:appengine-gradle-plugin:2.2.0'
}
}
apply plugin: 'com.google.cloud.tools.appengine'
build.gradle
64. GOOGLE CLOUD
$ ./gradlew appengineDeploy
Deployed service [default] to [https://calm-
history-228704.appspot.com]
You can stream logs from the command line by
running:
$ gcloud app logs tail -s default
To view your application in the web browser run:
$ gcloud app browse
BUILD SUCCESSFUL in 7m 26s
13 actionable tasks: 11 executed, 2 up-to-date
$ curl https://calm-history-228704.appspot.com
Micronaut on App Engine
https://guides.micronaut.io/micronaut-gradle-google-cloud
67. SUMMARY
• Micronaut is a full-featured framework designed
for modern cloud-based architectures
• Offers a slew of features that are useful in almost
every sort of application (not just microservices!)
• Micronaut is actively evolving and new capabilities
and integrations are being developed as we speak
• Micronaut community is growing and is super
helpful - join the Gitter channel! https://gitter.im/
micronautfw/