Test

HTML

<script src="https://code.jquery.com/jquery-3.4.1.slim.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.css">
<div class="container">
    <div class="module1">
      <div class="row">
        <div class="col-sm-4">
          <div class="cellHolder">
            <a href="#" class="btn btn-aura">Se e-développer</a>
            <h3>Pourquoi se lancer dans le e-commerce ?</h3>
            <div class="description">
              Pour communiquer en temps réel auprès de vos clients et prospects, les réseaux sociaux sont idéaux du
              fait
              de leur instantanéité.
            </div>
            <a href="#" class="read-more" aria-label="Lire la suite">Lire la suite</a>
          </div>
        </div>
        <div class="col-sm-4">
          <div class="cellHolder convex">
            <a href="#" class="btn btn-aura">Se e-développer</a>
            <h3>Comment se lancer dans le e-commerce ?</h3>
            <div class="description">
              Se lancer dans le e-commerce OUI, mais par où commencer : design, paiement, livraison, produits, stock ?
            </div>
            <a href="#" class="read-more" aria-label="Lire la suite">Lire la suite</a>
          </div>
        </div>
        <div class="col-sm-4">
          <div class="cellHolder concav">
            <h3>Innovation, ressources humaines, développement éco responsable...</h3>
            <div class="description">
              Il y a ceux qui s’informent frénétiquement, et ceux qui ne savent jamais à quel saint se vouer.
            </div>
            <a href="#" class="read-more" aria-label="Voir tous les conseils">Voir tous les...

SCSS

body {
  padding:10px;
}


/* pour aliger les blocks entre eux */
.row {
  align-items: stretch;
}
.row > * {
  flex-grow: 1;
  display: flex;
  flex-grow: 1;
}




:root {
  --orange: #fd7e14;
  --border: 2px solid var(--orange);
  --padding: 25px;
  --convex-width: 200px; /* la largeur de l'objet qui fait la courbe, en px, car sinon si on dépend de la largeur du parent, ça passera pas */
  --convex-height: 120%; /* la hauteur du convex, ta courbe dépendra de cette hauteur, en % de préférénce */ 
  --decalage: -44px; /* le décalage nécessaire pour replacer les éléments afin de pas avoir un truc dégueux 
    Le décalage dépend de --convex-width et --conver-height. Je n'ai pas pu faire de relation mathématique entre les 3. */
 --padding-convex: calc((var(--decalage) * -1) + var(--padding));
}

.cellHolder {
  border: 2px solid var(--orange);
  padding: var(--padding);
  position: relative;
  z-index: 1;

}

/* on ne garde que la bordure gauche */

.cellHolder.convex {
  border-right: none;
  border-top: none;
  border-bottom: none;
  overflow: hidden;
  margin-right: var(--decalage);
  z-index: 2;
}

/* la partie bordure droite arrondie */
.cellHolder.convex::before {
  content: "";
  position: absolute;
  top: 50%;
  right: 0;
  width: var(--convex-width);
  height: var(--convex-height);
  border-right: var(--border);
  z-index: 1;
  border-radius: 100%;
  transform: translate(0, -50%);
}

/* cette partie contient les fake bordure top et bottom */
.cellHolder.convex::after {
  content: "";
  position: absolute;
  top: 0;
  left: var(--decalage);
  width: 100%;
  height: 100%;
  border-top: var(--border);
  border-bottom: var(--border);
}

.cellHolder.concav {
  border: none;
  background: var(--orange);
  color: #fff;
  overflow: hidden;
  padding-left: var(--padding-convex);
}

/* pour le concav un simple cercle de 100%  et yolo */
.cellHolder.concav::before {
  content: "";
  position: absolute;
  top: 50%;
  right: 100%;
  margin-right: var(--decalage);
 ...