172 lines
5.5 KiB
HTML
172 lines
5.5 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
|
|
|
<title>Make.org Infra</title>
|
|
|
|
<link rel="stylesheet" href="reveal.js/dist/reset.css">
|
|
<link rel="stylesheet" href="reveal.js/dist/reveal.css">
|
|
<link rel="stylesheet" href="reveal.js/dist/theme/moon.css">
|
|
|
|
<!-- Theme used for syntax highlighted code -->
|
|
<link rel="stylesheet" href="reveal.js/plugin/highlight/monokai.css">
|
|
<!-- Font awesome is required for the chalkboard plugin -->
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/js/all.min.js"></script>
|
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
|
<!-- Custom controls plugin is used to for opening and closing annotation modes. -->
|
|
<script src="https://cdn.jsdelivr.net/npm/reveal.js-plugins@latest/customcontrols/plugin.js"></script>
|
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/reveal.js-plugins@latest/customcontrols/style.css">
|
|
<!-- Chalkboard plugin -->
|
|
<script src="https://cdn.jsdelivr.net/npm/reveal.js-plugins@latest/chalkboard/plugin.js"></script>
|
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/reveal.js-plugins@latest/chalkboard/style.css">
|
|
|
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/reveal.js-plugins/menu/font-awesome/css/fontawesome.css">
|
|
</head>
|
|
<body>
|
|
<div class="reveal">
|
|
<div class="slides">
|
|
<section data-markdown data-separator="^\n---\n$" data-separator-vertical="^\n--\n$">
|
|
<script type="text/template">
|
|
# Make.org Infrastructure
|
|
#### The open-source ~warmachine~ peacemachine
|
|
![make_logo](images/make_logo.png)<!-- .element height="100px" width="200px"
|
|
position="absolute" bottom="0" right="0"-->
|
|
![make_foundation_logo](images/make_foundation_logo.png)<!-- .element height="100px" width="200px"
|
|
position="absolute" bottom="0" right="0"-->
|
|
![alex_avatar](images/zaeroses2.png)<!-- .element height="100px" "width=200px"
|
|
position="absolute" bottom="0" right="0"-->
|
|
|
|
---
|
|
|
|
## Plan
|
|
1. Introduction
|
|
2. Aperçu de l'infra
|
|
3. CI/CD
|
|
4. Récap'
|
|
5. Et après?
|
|
|
|
---
|
|
|
|
## Introduction
|
|
|
|
--
|
|
|
|
### Make.org c'est:
|
|
|
|
* 35 serveurs bare-metal + 2 VPS sous CentOS chez OVH
|
|
* 2 environnements (prod+preprod) iso (ou presque)
|
|
* Une orchestration assurée par Chef Infra
|
|
* Une CI/CD gérée via Gitlab et mue par des runner GCP/self-hosted
|
|
* 19 services dans Docker Swarm
|
|
* 2 DB hostés + 3 DB managés / env
|
|
* 4 services clusterisés
|
|
* Un uptime du front à 99.92% depuis Novembre
|
|
* 1.5 SRE
|
|
|
|
---
|
|
|
|
## Aperçu de l'infra
|
|
|
|
--
|
|
|
|
![infra](images/infra.png)
|
|
|
|
---
|
|
|
|
## CI/CD
|
|
|
|
--
|
|
|
|
### Flow CI/CD
|
|
|
|
![cicd](images/cicd.png)
|
|
* Gitlab
|
|
* Tâches lancées par Rundeck
|
|
* Docker-Machine
|
|
* CI/CD templatisée
|
|
|
|
---
|
|
|
|
## Récap'
|
|
|
|
--
|
|
|
|
### Là ou c'est beau
|
|
|
|
* Code testé, buildé, déployé et mergé automatiquement (ou presque)
|
|
* Très peu de conf "snowflake"
|
|
* Service clusterisés (avec et sans Docker Swarm)
|
|
* Une capacité de montée charge importante
|
|
* Hébergé en Europe
|
|
* Aucun incident grave à notre charge
|
|
|
|
---
|
|
|
|
## Et après?
|
|
|
|
* Kubernetes
|
|
* AlmaLinux
|
|
* Backup Cassandra
|
|
* Amélioration logging
|
|
* Grafana dashboard refacto
|
|
* Divers housekeeping
|
|
* Mise à jour infrastructure
|
|
* Robo-cat
|
|
* Et j'en passe
|
|
|
|
</script>
|
|
</section>
|
|
</div>
|
|
</div>
|
|
|
|
<script src="reveal.js/dist/reveal.js"></script>
|
|
<script src="reveal.js/plugin/notes/notes.js"></script>
|
|
<script src="reveal.js/plugin/markdown/markdown.js"></script>
|
|
<script src="reveal.js/plugin/highlight/highlight.js"></script>
|
|
<script src="reveal.js/plugin/zoom/zoom.js"></script>
|
|
<script src="custom_plugins/mermaid/mermaid.js"></script>
|
|
<script src="custom_plugins/pdfexport/pdfexport.js"></script>
|
|
<script>
|
|
// More info about initialization & config:
|
|
// - https://revealjs.com/initialization/
|
|
// - https://revealjs.com/config/
|
|
Reveal.initialize({
|
|
hash: true,
|
|
controls: true,
|
|
progres: true,
|
|
history: true,
|
|
center: true,
|
|
slideNumber: true,
|
|
overview: true,
|
|
width: 1280,
|
|
heigth: 960,
|
|
margin: 0.04,
|
|
customcontrols: {
|
|
controls: [
|
|
{ icon: '<i class="fa fa-pen-square"></i>',
|
|
title: 'Toggle chalkboard (B)',
|
|
action: 'RevealChalkboard.toggleChalkboard();'
|
|
},
|
|
{ icon: '<i class="fa fa-pen"></i>',
|
|
title: 'Toggle notes canvas (C)',
|
|
action: 'RevealChalkboard.toggleNotesCanvas();'
|
|
}
|
|
]
|
|
},
|
|
|
|
// mermaid initialize config
|
|
mermaid: {
|
|
// flowchart: {
|
|
// curve: 'linear',
|
|
// },
|
|
},
|
|
|
|
// Learn about reveal.js/plugins: https://revealjs.com/reveal.js/plugins/
|
|
plugins: [ RevealMarkdown, RevealMermaid, RevealHighlight, RevealNotes, RevealZoom, PdfExport, RevealChalkboard, RevealCustomControls],
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|