Amazon CodeCatalyst tour d'horizon du service
Tags: aws, developer, codecatalyst, cloud
Published: 2023-06-05 15:55:32

**CodeCatalyst encore un autre service de code sur AWS qui rejoint la suite CodeCommit, CodeBuild, etc... me diriez-vous ? pas tout à fait !
Tour d'horizon d'un service qui s'annonce comme étant la prochaine génération d'outil pour développeurs par AWS**

##Présentation

Amazon CodeCatalyst à été [annoncé](https://aws.amazon.com/fr/blogs/aws/announcing-amazon-codecatalyst-preview-a-unified-software-development-service/) (en preview) par Werner Vogels le 1er décembre 2022 lors du re:Invent et est disponible en GA (General Availability) [depuis le 20 Avril 2023](https://aws.amazon.com/fr/blogs/devops/announcing-general-availability-of-amazon-codecatalyst/).
Ce service se présente comme étant une "place unifié de service pour les développeurs".
Concrètement il permet aussi bien **d'héberger son code (git)**, d'**interagir et commenter en équipe** sur le code, de **créer et suivre les tickets** que de lancer des pipelines de **déploiement automatisés (CI/CD)**

##Par ou démarrer ?
L'idée de ce post étant de présenter brièvement le service mais surtout de montrer les particularités d'Amazon CodeCatalyst par rapport à d'autres services sur AWS, une des premières particularités est qu'il à le droit à une plateforme dédiée (hors de la console AWS) avec un modèle d'authentification nouveau et différent de ce qu'on à pu voir avec IAM (qui à été lancé en meme temps que CodeCatalyst)

Actuellement le service est disponible que sur une seule et unique région
![une seule région](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/16tioblqjh23iuqphrs6.png)
<figcaption> D'autres régions arriveront surement très prochainement, en attendant... </figcaption>





Le [site du service](https://codecatalyst.aws/explore) ayant une interface bien à lui le modèle d'authentification également.
En effet, il est basé sur [AWS Builder ID](https://docs.aws.amazon.com/signin/latest/userguide/sign-in-aws_builder_id.html) qui est un nouveau service d'authentification dédié spécifiquement aux builders sur AWS, actuellement il fonctionne avec CodeCatalyst mais aussi CodeWhisperer (le service de génération de code via Machine Learning) et ne nécessite pas de carte bleu pour avoir un compte sur ce service (le compte administrateur (billing) de CodeCatalyst lui en aura bien besoin comme on le verra par la suite) et permet donc d'inviter des gens au(x) projet(s) sans nécessairement avoir un compte AWS.

Il suffit de s'enregistrer avec une adresse mail valide puis de créer son "espace" dans CodeCatalyst et ensuite de joindre son espace avec son compte AWS via un token ID créé au moment de l'initialisation de l'espace dans CodeCatalyst


![création de compte](https://media.giphy.com/media/bOgOEo1QfUxiE9Mw0X/giphy.gif)
<figcaption> Création d'un compte sur AWS Builder ID puis sur CodeCatalyst avec l'attachement a la console AWS (via token ID)</figcaption>

## Prise en main
Une des forces de CodeCatalyst se trouve dans les blueprints mis à disposition, les blueprints sont des projets (templates) assez complet qui permettent de découvrir le service mais aussi d'avoir un premier point de démarrage lorsqu'on souhaite explorer des nouveaux patterns / architectures / technos notamment avec du CDK (pas de projet avec du Terraform à ce jour), de [nombreux services sont présents](https://docs.aws.amazon.com/codecatalyst/latest/userguide/projects-templates.html)



![blueprints](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/03ky7vmt75lg7lef6yma.png)
<figcaption> Liste des blueprints disponible à ce jour </figcaption>

Au delà des blueprints il est aussi possible de connecter un repo GitHub existant ou démarrer à partir de zéro en créant son repo directement dans CodeCatalyst
![connecter son github a codecatalyst](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c60x0fl0vmkzu47pdu0h.png)
<figcaption> GitHub uniquement à ce jour mais pas surprenant que ça évolue dans le temps </figcaption>

L'utilisation d'un blueprint pour démarrer est assez rapide, les différents blueprints sont mis à jour et versionné directement par AWS et leur contenu est plutôt bien documenté
![utiliser un blueprint](https://media.giphy.com/media/pbOAvjQSbO2n4f8QIl/giphy.gif)
<figcaption> Utilisation d'un blueprint - idéal pour démarrer rapidement </figcaption>

Une fois dans le projet on à la possibilité d'ajouter des membres avec de la collaboration & échanges, des issues (également en provenance de [Jira](https://docs.aws.amazon.com/codecatalyst/latest/userguide/extensions-jira.html)), des secrets et toute la richesse d'un workflow CI/CD

Les workflows sont éditables de manière graphique (low-code) ou en YAML et la possibilité d'importer en partie des [GitHub Actions](https://docs.aws.amazon.com/codecatalyst/latest/userguide/integrations-github-actions.html)

![CodeCatalyst Workflow en format graphique ](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x0mo1ajcxcgr2cldnghu.png)
<figcaption> Exemple de workflow en format graphique </figcaption>

Le code peut être éditer directement depuis différents environnements de développement (IDE) (avec un plugin CodeCatalyst dédié)
![Code édition](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u4a2n5e4errt2wxnbzzj.png)
<figcaption> Il est bien entendu possible aussi de cloner le repo en local mais l'avantage de lier CodeCatalyst avec son IDE est qu'il intègre deja toute la phase de connexion avec le projet</figcaption>


## Tarifs  
CodeCatalyst à une offre "[Free tier](https://codecatalyst.aws/explore/pricing)" pour démarrer et une offre "[Standard tier](https://codecatalyst.aws/explore/pricing)" pour aller plus loin.
Ce qui est original c'est qu'on choisit l'offre dans laquelle on souhaite démarrer et si on part sur du "Free tier" l'upgrade ne se fait pas toute seule et le service est coupé (alors qu'habituellement AWS n'as pas l'habitude de stopper le service mais de facturer ce qui dépasse du free tier).
La facturation se fait par "espace" (dans un espace on peut mettre plusieurs projets), on peut créer jusqu'a 5 espaces dans CodeCatalyst par région et un seul en Free tier dans la région.
L'interface de billing est assez détaillée et se met à jour assez rapidement pour refléter l'usage au niveau de l'espace 


![codecatalyst billing](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2z3agk562ij47ak0oeda.png)
<figcaption> Interface de billing assez détaillée et qui est mise à jour rapidement </figcaption>

A noter que cela n'inclut pas le cout de création des resources sur le(s) compte(s) AWS (S3, Lambda, ECS, etc...)

## Architecture

Une des originalités de CodeCatalyst en tant que service AWS est son coté "modulable" et flexible au niveau des accès et du déploiement des ressources sur les comptes.


![CodeCatalyst interaction](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3p147o9azs28mj8shzkq.png)

Comme on peut le voir dans le schéma il est possible de dissocier en plusieurs comptes AWS le déploiement des ressources avec différents projets sur un meme espace.
Il est possible dans un projet de créer plusieurs environnements pour les lier à différents comptes AWS (ex. dev et prod)

## Conclusion
CodeCatalyst s'annonce clairement comme un nouveau service différenciateur et viendra surement en remplacement de la suite CodeCommit, CodeBuild etc... sur le long terme
Une interface et plateforme à part lui permet de partir sur des nouvelles fondations pour itérer plus efficacement, à suivre :-)

### Pour aller plus loin
si vous souhaitez en savoir plus sur CodeCatalyst différents liens

- [Documentation de CodeCatalyst](https://docs.aws.amazon.com/codecatalyst/index.html)
- [Workshop pour démarrer avec le service](https://catalog.us-east-1.prod.workshops.aws/workshops/23fa5676-2943-415b-98b9-125f5e86912d/en-US)
- [Présentation au re:Invent 2022](https://youtu.be/mKdGehrUYFI)

N'hésitez pas à indiquer en commentaire si vous avez des questions