SlideShare a Scribd company logo
1 of 36
Download to read offline
EUROPE'S LEADING AEM DEVELOPER CONFERENCE
25TH – 27TH SEPTEMBER 2023
Sling Applications - a DevOps perspective
Robert Munteanu, Adobe
About me
2
Outline
Define
Deploy
Monitor
Maintain
3
[Define] OSGi Feature Model
{
"bundles":[
{
"id":"org.owasp.encoder:encoder:1.2.3",
"start-order":"5"
},
{
"id":"commons-codec:commons-codec:1.16.0",
"start-order":"5"
}
]
}
4
[Define] Maven tooling
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for pospai 1.0-SNAPSHOT:
[INFO]
[INFO] pospai ............................................. SUCCESS [ 0.157 s]
[INFO] pospai - Core ...................................... SUCCESS [ 2.074 s]
[INFO] pospai - UI Users .................................. SUCCESS [ 0.446 s]
[INFO] pospai - UI Apps ................................... SUCCESS [ 0.088 s]
[INFO] pospai - Launcher .................................. SUCCESS [ 1.819 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
5
[Define] Reference blueprints
<aggregate>
<filesInclude>*.json</filesInclude>
<includeArtifact>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.starter</artifactId>
<version>12</version>
</includeArtifact>
</aggregate>
Compact
Low-effort start of upgrade
Lifecycle tied to upstream release
Opaque
All or-nothing for certain features
6
[Define] Replicate blueprints
src/main/features/
├── app
│ ├── pospai.json
│ └── pospai-repoinit.txt
└── platform
├── base.json
├── base-repoinit.txt
├── boot.json
├── caconfig.json
└── caconfig-repoinit.txt
(snip)
Fine-grained control, incremental updates possible
More effort in keeping up-to-date
7
[Define] Secrets management
"org.apache.sling.extensions.oidc_rp.impl.OidcConnectionImpl~google": {
"name": "google",
"baseUrl": "https://accounts.google.com",
"clientId": "$[secret:google/clientId]",
"clientSecret": "$[secret:google/clientSecret]",
"scopes": ["openid"]
}
8
[Build] Application assembly
<plugin>
<groupId>org.apache.sling</groupId>
<artifactId>slingfeature-maven-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<aggregates>
<aggregate>
<classifier>app</classifier>
<filesInclude>platform/**/*.json</filesInclude>
<filesInclude>app/*.json</filesInclude>
</aggregate>
</aggregates>
<!-- snip -->
</configuration>
</plugin>
9
[Build] Application analysis
<plugin>
<groupId>org.apache.sling</groupId>
<artifactId>slingfeature-maven-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<scans>
<scan>
<includeClassifier>app</includeClassifier>
</scan>
</scans>
<!-- snip -->
</configuration>
</plugin>
10
[Build] Smoke ITs
<plugin>
<artifactId>docker-maven-plugin</artifactId>
<configuration>
<!-- snip -->
<run>
<ports>http.port:8080</ports>
<wait>
<http>
<url>http://localhost:${http.port}↳
/system/health.txt?tags=startup</url>
<status>200</status>
</http>
</wait>
</run>
</configuration>
</plugin>
11
[Build] Health checks
"configurations": {
"org.apache.felix.hc.generalchecks.BundlesStartedCheck": {
"hc.tags": ["startup"], "useCriticalForInactive": true
},
"org.apache.sling.jcr.contentloader.hc.BundleContentLoadedCheck": {
"hc.tags": ["startup"],
},
"org.apache.felix.hc.generalchecks.FrameworkStartCheck": {
"hc.tags": ["startup"], "targetStartLevel:Integer":"30"
},
"org.apache.felix.hc.generalchecks.ServicesCheck": {
"hc.tags": ["startup"],
"services.list": [
"org.apache.sling.jcr.api.SlingRepository"
]
}
}
12
[Build] Security checks (Maven)
$ mvn org.sonatype.ossindex.maven:ossindex-maven-plugin:audit
[ERROR] Failed to execute goal ossindex-maven-plugin:audit (default-cli)
on project org.apache.sling.starter: Detected 1 vulnerable components:
[ERROR] xerces:xercesImpl:jar:2.6.2:test;
https://ossindex.sonatype.org/(...)
[ERROR] * [CVE-2009-2625] CWE-400: ('Resource Exhaustion') (5.0);
https://ossindex.sonatype.org/(...)
[ERROR] * [CVE-2012-0881] CWE-399 (7.5);
https://ossindex.sonatype.org/(...)
[ERROR] * [CVE-2013-4002] CWE-400: ('Resource Exhaustion') (7.1);
https://ossindex.sonatype.org/(...)
[ERROR] * [CVE-2022-23437] CWE-835: ('Infinite Loop') (6.5);
https://ossindex.sonatype.org/(...)
[ERROR] * [CVE-2017-10355] CWE-833: Deadlock (5.9);
https://ossindex.sonatype.org/(...)
13
[Build ] Security checks (Container)
$ trivy image --severity HIGH,CRITICAL sample/app:snapshot
sample/app:snapshot (debian 11.3)
Total: 46 (HIGH: 36, CRITICAL: 10)
┌──────────────┬────────────────┬──────────┬─────────────────────┬───────────────────┬──────────────────────────────────────────────────────────────┐
│ Library │ Vulnerability │ Status │ Installed Version │ Fixed Version │ Title │
├──────────────┼────────────────┼──────────┼─────────────────────┼───────────────────┼──────────────────────────────────────────────────────────────┤
│ bash │ CVE-2022-3715 │ affected │ 5.1-2+b3 │ │ a heap-buffer-overflow in valid_parameter_transform │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2022-3715 │
├──────────────┼────────────────┼──────────┼─────────────────────┼───────────────────┼──────────────────────────────────────────────────────────────┤
│ dpkg │ CVE-2022-1664 │ fixed │ 1.20.9 │ 1.20.10 │ Dpkg::Source::Archive in dpkg, the Debian package management │
│ │ │ │ │ │ system, b ... │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2022-1664 │
└──────────────┴────────────────┴──────────┴─────────────────────┴───────────────────┴──────────────────────────────────────────────────────────────┘
# (snip)
Java (jar)
Total: 1 (HIGH: 1, CRITICAL: 0)
┌─────────────────────────────────────────┬───────────────┬────────┬───────────────────┬───────────────┬───────────────────────────────────────────┐
│ Library │ Vulnerability │ Status │ Installed Version │ Fixed Version │ Title │
├─────────────────────────────────────────┼───────────────┼────────┼───────────────────┼───────────────┼───────────────────────────────────────────┤
│ com.google.guava:guava (guava-15.0.jar) │ CVE-2023-2976 │ fixed │ 15.0 │ 32.0.0 │ insecure temporary directory creation │
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2023-2976 │
└─────────────────────────────────────────┴───────────────┴────────┴───────────────────┴───────────────┴───────────────────────────────────────────┘
14
[Deploy] RPM packaging
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>rpm-maven-plugin</artifactId>
<configuration>
<name>pospai</name>
<mappings>
<mapping>
<directory>/usr/share/pospai/lib</directory>
<dependency/>
</mapping>
<mapping>
<directory>/usr/share/pospai/repo</directory>
<sources>
<source>
<location>../launcher/target/repository</location>
</source>
</sources>
</mapping>
</mappings>
</configuration>
</plugin> 15
[Deploy] Container image
FROM docker.io/apache/sling:snapshot AS starter
FROM docker.io/eclipse-temurin:17
ENV EXTRA_JAVA_OPTS="-Dorg.apache.felix.configadmin.plugin.interpolation.secretsdir=/etc/pospai/secrets"
EXPOSE 8080
RUN groupadd --system sling && 
useradd --no-log-init --system --gid sling sling && 
mkdir /opt/sling && 
mkdir /opt/sling/bin && 
mkdir /opt/sling/org.apache.sling.feature.launcher && 
mkdir /opt/sling/launcher && 
mkdir /opt/sling/artifacts && 
mkdir /opt/sling/agents && 
chown -R sling:sling /opt/sling/launcher
VOLUME /opt/sling/launcher
# continued on the next slide
16
[Deploy] Container image (2)
# continued from the next slide
COPY --from=starter /opt/sling/bin /opt/sling/bin
COPY target/dependency/org.apache.sling.feature.launcher /opt/sling/org.apache.sling.feature.launcher
COPY target/artifacts/ /opt/sling/artifacts/
# ensure all files are readable by the sling user
# for some reason some jar files are 0600 while most are 0644
RUN find /opt/sling/artifacts -type f -perm 0600 | xargs --no-run-if-empty chmod 0644
USER sling:sling
WORKDIR /opt/sling
ENTRYPOINT [ "/opt/sling/bin/launch.sh" ]
CMD ["oak_tar"]
17
[Deploy] Kubernetes
$ flux tree ks app-pospai
Kustomization/flux-system/app-pospai
├── Namespace/app-pospai
├── Secret/app-pospai/docker.io
├── Service/app-pospai/pospai
├── Deployment/app-pospai/pospai
├── PersistentVolumeClaim/app-pospai/pospai-data
└── Ingress/app-pospai/ingress
18
[Deploy] Kubernetes scaling
$ kubectl get pvc
NAME STATUS CAPACITY ACCESS MODES
pospai-data Bound 1Gi RWO
$ kubectl get deploy pospai -o json | jq '.spec.replicas'
1
$ kubectl get deploy pospai -o json | jq ' .spec.strategy.type'
"Recreate"
19
[Monitor] Logging
{
"configurations":{
"org.apache.sling.commons.log.LogManager":{
"org.apache.sling.commons.log.file":""
}
}
}
20
[Monitor] Logging
21
[Monitor] Metrics
{
"bundles": [
{
"id": "org.apache.sling/org.apache.sling.commons.metrics.prometheus/1.0",
"start-order": 20
}
]
}
$ curl --silent http://localhost:8080/metrics | grep -E '^(sling|oak|jvm)' | wc -l
486
22
[Monitor] Oak performance metrics
oak_QUERY_DURATION / oak_QUERY_DURATION_index...
oak_COMMIT_QUEUE_SIZE
oak_INDEX_SIZE(...)
oak_SESSION_COUNT
23
[Monitor] Oak availability metrics
oak_LOGIN_ERRORS_total
oak_LOCAL_INDEX_DIR_SIZE
oak_SEGMENT_REPO_SIZE
24
[Monitor] Sling performance metrics
sling_commons_scheduler_running_jobs
sling_org_apache_sling_resourceresolver_numberOfVanityPaths
sling_org_apache_sling_resourceresolver_numberOfAliases
25
[Monitor] Sling availability metrics
sling_discovery_oak_local_cluster_instances
sling_event_jobs_failed_count
sling_org_apache_sling_resourceresolver_unclosedResourceResolvers
26
[Monitor] Metrics
27
[Monitor] Metrics
28
[Monitor] Alerting
29
[Monitor] Tracing
30
[Maintain ] Renovate PR - message
31
[Maintain ] Renovate PR - message
32
[Maintain ] Renovate Config - apps
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [ "config:base", "regexManagers:mavenPropertyVersions" ],
"packageRules": [
{
"matchPackagePrefixes": [ "org.apache.jackrabbit:" ],
"groupName": "Apache Jackrabbit and Jackrabbit Oak",
"allowedVersions": "/^[0-9]+.[0-9]*[02468]+.[0-9]+$/"
},
{
"matchPackagePatterns": [ "guava" ],
"enabled": false
}
]
}
33
[Maintain ] Renovate Config - bundles
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [ "config:base" ],
"packageRules": [
{
"matchManagers": [
"maven"
],
"matchDepTypes": [
"provided"
],
"enabled": false
}
]
}
34
Demo
Demo
Demo
Demo
Demo
35
Resources
https://github.com/apache/sling-org-apache-sling-commons-metrics-prometheus/
https://github.com/renovatebot/renovate/
https://github.com/apache/sling-project-archetype/pull/12
https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/9469
https://github.com/rombert/pospai
36

More Related Content

Similar to Sling Applications - A DevOps perspective

containerit at useR!2017 conference, Brussels
containerit at useR!2017 conference, Brusselscontainerit at useR!2017 conference, Brussels
containerit at useR!2017 conference, Brussels
Daniel Nüst
 
Android Boot Time Optimization
Android Boot Time OptimizationAndroid Boot Time Optimization
Android Boot Time Optimization
Kan-Ru Chen
 
Virtualization and automation of library software/machines + Puppet
Virtualization and automation of library software/machines + PuppetVirtualization and automation of library software/machines + Puppet
Virtualization and automation of library software/machines + Puppet
Omar Reygaert
 

Similar to Sling Applications - A DevOps perspective (20)

containerit at useR!2017 conference, Brussels
containerit at useR!2017 conference, Brusselscontainerit at useR!2017 conference, Brussels
containerit at useR!2017 conference, Brussels
 
[Hands-on 필수 준비 사항] 쇼핑몰 예제를 통한 Microservice 개발/배포 실습 - 황주필 부장 / 강인호 부장, 한국오라클
[Hands-on 필수 준비 사항] 쇼핑몰 예제를 통한 Microservice 개발/배포 실습 - 황주필 부장 / 강인호 부장, 한국오라클[Hands-on 필수 준비 사항] 쇼핑몰 예제를 통한 Microservice 개발/배포 실습 - 황주필 부장 / 강인호 부장, 한국오라클
[Hands-on 필수 준비 사항] 쇼핑몰 예제를 통한 Microservice 개발/배포 실습 - 황주필 부장 / 강인호 부장, 한국오라클
 
Docker, c'est bonheur !
Docker, c'est bonheur !Docker, c'est bonheur !
Docker, c'est bonheur !
 
Scaling Docker Containers using Kubernetes and Azure Container Service
Scaling Docker Containers using Kubernetes and Azure Container ServiceScaling Docker Containers using Kubernetes and Azure Container Service
Scaling Docker Containers using Kubernetes and Azure Container Service
 
Kubernetes laravel and kubernetes
Kubernetes   laravel and kubernetesKubernetes   laravel and kubernetes
Kubernetes laravel and kubernetes
 
OpenSCAP Overview(security scanning for docker image and container)
OpenSCAP Overview(security scanning for docker image and container)OpenSCAP Overview(security scanning for docker image and container)
OpenSCAP Overview(security scanning for docker image and container)
 
Start tracking your ruby infrastructure
Start tracking your ruby infrastructureStart tracking your ruby infrastructure
Start tracking your ruby infrastructure
 
Real World Experience of Running Docker in Development and Production
Real World Experience of Running Docker in Development and ProductionReal World Experience of Running Docker in Development and Production
Real World Experience of Running Docker in Development and Production
 
kubernetes practice
kubernetes practicekubernetes practice
kubernetes practice
 
k8s practice 2023.pptx
k8s practice 2023.pptxk8s practice 2023.pptx
k8s practice 2023.pptx
 
DCEU 18: Tips and Tricks of the Docker Captains
DCEU 18: Tips and Tricks of the Docker CaptainsDCEU 18: Tips and Tricks of the Docker Captains
DCEU 18: Tips and Tricks of the Docker Captains
 
Android Boot Time Optimization
Android Boot Time OptimizationAndroid Boot Time Optimization
Android Boot Time Optimization
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
How to create your own hack environment
How to create your own hack environmentHow to create your own hack environment
How to create your own hack environment
 
Containers with systemd-nspawn
Containers with systemd-nspawnContainers with systemd-nspawn
Containers with systemd-nspawn
 
Docker practice
Docker practiceDocker practice
Docker practice
 
Attacking IoT Devices from a Web Perspective - Linux Day
Attacking IoT Devices from a Web Perspective - Linux Day Attacking IoT Devices from a Web Perspective - Linux Day
Attacking IoT Devices from a Web Perspective - Linux Day
 
9 creating cent_os 7_mages_for_dpdk_training
9 creating cent_os 7_mages_for_dpdk_training9 creating cent_os 7_mages_for_dpdk_training
9 creating cent_os 7_mages_for_dpdk_training
 
Upgrade Ubuntu 18.04 Security with Secureboot
Upgrade Ubuntu 18.04 Security with SecurebootUpgrade Ubuntu 18.04 Security with Secureboot
Upgrade Ubuntu 18.04 Security with Secureboot
 
Virtualization and automation of library software/machines + Puppet
Virtualization and automation of library software/machines + PuppetVirtualization and automation of library software/machines + Puppet
Virtualization and automation of library software/machines + Puppet
 

More from Robert Munteanu

More from Robert Munteanu (20)

Secure by Default Web Applications
Secure by Default Web ApplicationsSecure by Default Web Applications
Secure by Default Web Applications
 
Will it blend? Java agents and OSGi
Will it blend? Java agents and OSGiWill it blend? Java agents and OSGi
Will it blend? Java agents and OSGi
 
Escape the defaults - Configure Sling like AEM as a Cloud Service
Escape the defaults - Configure Sling like AEM as a Cloud ServiceEscape the defaults - Configure Sling like AEM as a Cloud Service
Escape the defaults - Configure Sling like AEM as a Cloud Service
 
Crash course in Kubernetes monitoring
Crash course in Kubernetes monitoringCrash course in Kubernetes monitoring
Crash course in Kubernetes monitoring
 
Java agents for fun and (not so much) profit
Java agents for fun and (not so much) profitJava agents for fun and (not so much) profit
Java agents for fun and (not so much) profit
 
Will it blend? Java agents and OSGi
Will it blend? Java agents and OSGiWill it blend? Java agents and OSGi
Will it blend? Java agents and OSGi
 
Cloud-native legacy applications
Cloud-native legacy applicationsCloud-native legacy applications
Cloud-native legacy applications
 
Cloud-Native Sling
Cloud-Native SlingCloud-Native Sling
Cloud-Native Sling
 
From Monolith to Modules - breaking apart a one size fits all product into mo...
From Monolith to Modules - breaking apart a one size fits all product into mo...From Monolith to Modules - breaking apart a one size fits all product into mo...
From Monolith to Modules - breaking apart a one size fits all product into mo...
 
What's new in the Sling developer tooling?
What's new in the Sling developer tooling?What's new in the Sling developer tooling?
What's new in the Sling developer tooling?
 
Scaling up development of a modular code base
Scaling up development of a modular code baseScaling up development of a modular code base
Scaling up development of a modular code base
 
Scaling up development of a modular code base
Scaling up development of a modular code baseScaling up development of a modular code base
Scaling up development of a modular code base
 
Scaling up development of a modular code base
Scaling up development of a modular code baseScaling up development of a modular code base
Scaling up development of a modular code base
 
Zero downtime deployments for Sling application using Docker
Zero downtime deployments for Sling application using DockerZero downtime deployments for Sling application using Docker
Zero downtime deployments for Sling application using Docker
 
Scaling up development of a modular code base
Scaling up development of a modular code baseScaling up development of a modular code base
Scaling up development of a modular code base
 
Do you really want to go fully micro?
Do you really want to go fully micro?Do you really want to go fully micro?
Do you really want to go fully micro?
 
Effective web application development with Apache Sling
Effective web application development with Apache SlingEffective web application development with Apache Sling
Effective web application development with Apache Sling
 
Of microservices and microservices
Of microservices and microservicesOf microservices and microservices
Of microservices and microservices
 
Slide IDE Tooling (adaptTo 2016)
Slide IDE Tooling (adaptTo 2016)Slide IDE Tooling (adaptTo 2016)
Slide IDE Tooling (adaptTo 2016)
 
Secure by Default Web Applications with Apache Sling
Secure by Default Web Applications with Apache SlingSecure by Default Web Applications with Apache Sling
Secure by Default Web Applications with Apache Sling
 

Recently uploaded

%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 

Recently uploaded (20)

WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
 
WSO2CON 2024 - Building a Digital Government in Uganda
WSO2CON 2024 - Building a Digital Government in UgandaWSO2CON 2024 - Building a Digital Government in Uganda
WSO2CON 2024 - Building a Digital Government in Uganda
 
WSO2Con2024 - Hello Choreo Presentation - Kanchana
WSO2Con2024 - Hello Choreo Presentation - KanchanaWSO2Con2024 - Hello Choreo Presentation - Kanchana
WSO2Con2024 - Hello Choreo Presentation - Kanchana
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...
WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...
WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
 
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public AdministrationWSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
AzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdf
AzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdfAzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdf
AzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdf
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
WSO2Con2024 - Simplified Integration: Unveiling the Latest Features in WSO2 L...
WSO2Con2024 - Simplified Integration: Unveiling the Latest Features in WSO2 L...WSO2Con2024 - Simplified Integration: Unveiling the Latest Features in WSO2 L...
WSO2Con2024 - Simplified Integration: Unveiling the Latest Features in WSO2 L...
 
WSO2CON 2024 - IoT Needs CIAM: The Importance of Centralized IAM in a Growing...
WSO2CON 2024 - IoT Needs CIAM: The Importance of Centralized IAM in a Growing...WSO2CON 2024 - IoT Needs CIAM: The Importance of Centralized IAM in a Growing...
WSO2CON 2024 - IoT Needs CIAM: The Importance of Centralized IAM in a Growing...
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
 
WSO2Con2024 - Organization Management: The Revolution in B2B CIAM
WSO2Con2024 - Organization Management: The Revolution in B2B CIAMWSO2Con2024 - Organization Management: The Revolution in B2B CIAM
WSO2Con2024 - Organization Management: The Revolution in B2B CIAM
 

Sling Applications - A DevOps perspective