<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Julio Contreras</title>
    <description>The latest articles on DEV Community by Julio Contreras (@julioacontreras).</description>
    <link>https://dev.to/julioacontreras</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F693160%2F43bbedad-9535-4d39-a35b-2760127de049.jpeg</url>
      <title>DEV Community: Julio Contreras</title>
      <link>https://dev.to/julioacontreras</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/julioacontreras"/>
    <language>en</language>
    <item>
      <title>Empezando mi propio proyecto 🚀</title>
      <dc:creator>Julio Contreras</dc:creator>
      <pubDate>Tue, 02 Nov 2021 21:25:57 +0000</pubDate>
      <link>https://dev.to/julioacontreras/empezar-tu-propio-proyecto-53b9</link>
      <guid>https://dev.to/julioacontreras/empezar-tu-propio-proyecto-53b9</guid>
      <description>&lt;p&gt;Muchas veces tenemos buenas ideas y no la empezamos porque es muy ambicioso, o por falta de dinero, por falta de buenos contactos y principalmente por el miedo de fallar. &lt;/p&gt;

&lt;p&gt;Pues a hora pienso diferente, estoy en un momento de mi vida que veo el fallar como parte del proceso. Pero siempre intentando prever los problemas, sabiendo que por más que uno se prepare la tempestad vendrá mas tarde o temprano.&lt;/p&gt;

&lt;p&gt;Actualmente tengo tres ideas de proyecto, entonces pensé en crear una arquitectura que se pueda pivotar sin afectar otras cosas ya desarrolladas.&lt;/p&gt;

&lt;p&gt;Preguntas que me venían en la cabeza como:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Como puedo construir una aplicación que se pueda reutilizar en diferentes proyectos?&lt;/strong&gt;&lt;br&gt;
✨ Con micro servicios.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Como puedo construir un micro servicio separando las reglas de negocio con la tecnología?&lt;/strong&gt;&lt;br&gt;
✨ Arquitectura DDD.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Como puedo comunicar mis micro servicios con alta performance?&lt;/strong&gt;&lt;br&gt;
✨ Protocolo gRPC.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Y para informaciones que no tengo tanta urgencia, como gerenciar una gran cuantidad de mensajes de forma distribuida?&lt;/strong&gt;&lt;br&gt;
✨ RabbitMQ.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Como puedo multiplicar mis micro servicios en caso que aumente mi demanda?&lt;/strong&gt;&lt;br&gt;
✨ Docker y Kubernetes.&lt;/p&gt;

&lt;p&gt;Después de pensar mucho, llegue a esta arquitectura, donde cada microservice esta contenido en un Docker, y todo gestionado por el Kubernetes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpmj1kb0eczx6vbbmitdb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpmj1kb0eczx6vbbmitdb.png" alt=" " width="800" height="712"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Voy a dejar el Kubernetes por ultimo, por a hora me voy a focar en crear los micro servicios conversando por una camada de protocolo llamada &lt;a href="https://www.npmjs.com/package/action-grpc" rel="noopener noreferrer"&gt;Protocol Action&lt;/a&gt;, más detalles cuento &lt;a href="https://dev.to/julioacontreras/action-protocol-abstract-layer-to-works-you-microservice-5d4h"&gt;aquí&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Dividí los microservicios en dos tipos: agiles y de almacenamiento.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Micro servicio agiles&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Son los micro servicios que necesita dar una respuesta inmediata al usuario. Para esto añadí la tecnología Redis, poniendo la información en cache. Estos contenedores serán de tipo worker, eso significa que dependiendo de la demanda Kubernete tiene el control para crear mas o menos instancias. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Micro servicio de almacenamiento&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Son los micro servicios que necesita persistir la información. Como tienen que interactuar con el disco duro terminan siendo mas lento, pero necesarios. Estos contenedores estarán categorizados por Kubernetes como main, eso significa que se mantendrán fijos, no se pueden destruir, diferente de los workers.   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Métricas&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;En cada micro servicio tendrá un endpoint para Prometheus poder leer la información y repasar para Graphana poder demonstrar estos datos de una forma visual. El &lt;strong&gt;&lt;em&gt;protocol action&lt;/em&gt;&lt;/strong&gt; crea un standart entre los microservicios, facilitando el envió de los datos para monitorización de los totales y tempo de requisiciones.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Evolución&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Un micro servicio ya esta disponible, dale estrellita y fork, eso me ayuda mucho. &lt;a href="https://github.com/julioacontreras/authenticator-storage" rel="noopener noreferrer"&gt;https://github.com/julioacontreras/authenticator-storage&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Por a hora es esto, voy a intentar hacer posts semanalmente, pero es muy importante el feedback de ustedes. Si te interesasteis clica en &lt;strong&gt;subscribirte&lt;/strong&gt; y &lt;strong&gt;corazón&lt;/strong&gt; para saber que quieren más contenido como este.&lt;/p&gt;

&lt;p&gt;Pueden entrar en contacto por &lt;a href="https://www.linkedin.com/in/julio-contreras-6579b623/" rel="noopener noreferrer"&gt;linkedin&lt;/a&gt; para cualquier duda o sugestión.&lt;br&gt;
Hasta luego y no dejen sus proyectos para después! 😀&lt;/p&gt;

</description>
      <category>microservices</category>
      <category>docker</category>
      <category>kubernetes</category>
      <category>startup</category>
    </item>
    <item>
      <title>Action Protocol, abstract layer to help create your microservice.</title>
      <dc:creator>Julio Contreras</dc:creator>
      <pubDate>Tue, 02 Nov 2021 19:14:11 +0000</pubDate>
      <link>https://dev.to/julioacontreras/action-protocol-abstract-layer-to-works-you-microservice-5d4h</link>
      <guid>https://dev.to/julioacontreras/action-protocol-abstract-layer-to-works-you-microservice-5d4h</guid>
      <description>&lt;p&gt;Hello world! I've been a programmer for over ten years in different technologies.&lt;/p&gt;

&lt;p&gt;This year I started making my own microservices and found many interesting things like DDD architecture, gRPC protocols and metrics systems.&lt;/p&gt;

&lt;p&gt;In the middle of development I came across a question. How use HTTP or gRPC without change my application?&lt;/p&gt;

&lt;p&gt;It was when I had the idea to create an abstraction layer, where I pass the action, data and authorization token.&lt;/p&gt;

&lt;p&gt;This also allows to control the time and quantity of general requests or by type of action.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw8k65cxuqiajzhyv09nu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw8k65cxuqiajzhyv09nu.png" alt=" " width="799" height="203"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Example data:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"action"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"createCar"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"data"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"brand"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Ferrary"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"color"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"red"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"token"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mytokensecret"&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Repository:&lt;br&gt;
&lt;a href="https://www.npmjs.com/package/action-grpc" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/action-grpc&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Example project using action-grpc:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;src/infrastructure/http/http.ts&lt;/li&gt;
&lt;li&gt;src/infrastructure/grpc/grpc.ts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://github.com/julioacontreras/authenticator-storage" rel="noopener noreferrer"&gt;https://github.com/julioacontreras/authenticator-storage&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank´s and good vibes!&lt;br&gt;
Bye&lt;/p&gt;

</description>
      <category>microservices</category>
      <category>grpc</category>
      <category>http</category>
      <category>protocol</category>
    </item>
  </channel>
</rss>
