Skip to content

Spanish version #10

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 49 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
1d8a807
Begin translating into Spanish:
luilver Sep 1, 2022
9604d6e
Translate into Spanish:
luilver Sep 1, 2022
8bd0d50
Fix a translation mistake
luilver Sep 1, 2022
9345b6a
Translate into Spanish:
luilver Sep 2, 2022
d61f94f
Fix some typos
luilver Sep 2, 2022
a5268d7
Translate into Spanish:
luilver Sep 3, 2022
32666a2
Fix spanish cover
luilver Sep 3, 2022
5341723
Minor translation fixes to:
luilver Sep 4, 2022
900b7e7
Enhance readability by mixing sentences
luilver Sep 4, 2022
54becc9
Add a note of the translator (:
luilver Sep 4, 2022
444616e
Translate into Spanish:
luilver Sep 7, 2022
4a2b367
Translate into Spanish:
luilver Sep 8, 2022
c7642f8
Fix a typo
luilver Sep 8, 2022
ee38313
Fix some ending whitespaces
luilver Sep 8, 2022
23982df
Fix a translation missconcept
luilver Sep 13, 2022
51ea3ef
Translate into Spanish:
luilver Sep 13, 2022
2a10129
Translate into Spanish:
luilver Feb 5, 2023
430a3b4
Fix translation
luilver Feb 5, 2023
d4a36a7
Fix a typo
luilver Feb 5, 2023
e744938
Fix translation
luilver Feb 5, 2023
dbf2dfc
Fixes multiples
luilver Feb 5, 2023
1f8f847
Fix unformatted links
luilver Feb 5, 2023
2176a58
Fix unformatted links
luilver Feb 5, 2023
de690a1
Fix emtpy line
luilver Feb 5, 2023
86c8db8
Format links
luilver Feb 5, 2023
7e3648d
Translate into Spanish:
luilver Aug 20, 2023
c80af5d
Merge branch 'kevinwatson:master' into master
luilver Aug 20, 2023
d65a0e7
Translate into Spanish:
luilver Aug 21, 2023
1bbf558
Translate into Spanish:
luilver Aug 21, 2023
18b0b03
Fix a typo and a miss translation
luilver Aug 21, 2023
286952d
Translate into Spanish:
luilver Aug 21, 2023
b458abc
Translate into Spanish:
luilver Aug 23, 2023
d084d97
Fix translation
luilver Aug 23, 2023
e911c37
Update acknowledgements
luilver Aug 30, 2023
53afb94
Translate into Spanish:
luilver Sep 22, 2023
82aff72
Fix some misstranslations
luilver Sep 22, 2023
b7f35f7
Translate into Spanish:
luilver Apr 14, 2024
f682cc3
Fix some misstranslations
luilver Apr 14, 2024
58c8edd
Translate into Spanish:
luilver May 24, 2024
bf1ba7f
Translate into Spanish:
luilver Jul 12, 2024
09106e0
Translate into Spanish:
luilver Jul 12, 2024
57cca7e
Translate into Spanish:
luilver Jul 12, 2024
b73d2d9
Translate into Spanish:
luilver Jul 12, 2024
066fc4e
Fix offenses
luilver Jul 12, 2024
736c583
Translate into Spanish:
luilver Jul 12, 2024
91d5f1c
Add rubocop yml file
luilver Jul 12, 2024
d5d104f
Add overcommit yml file
luilver Jul 12, 2024
d4d3590
Merge branch 'spanish-fork'
luilver Jul 23, 2024
dc4866c
Merge branch 'master'
luilver Jul 23, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions .overcommit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Use this file to configure the Overcommit hooks you wish to use. This will
# extend the default configuration defined in:
# https://github.com/sds/overcommit/blob/master/config/default.yml
#
# At the topmost level of this YAML file is a key representing type of hook
# being run (e.g. pre-commit, commit-msg, etc.). Within each type you can
# customize each hook, such as whether to only run it on certain files (via
# `include`), whether to only display output if it fails (via `quiet`), etc.
#
# For a complete list of hooks, see:
# https://github.com/sds/overcommit/tree/master/lib/overcommit/hook
#
# For a complete list of options that you can use to customize hooks, see:
# https://github.com/sds/overcommit#configuration
#
# Uncomment the following lines to make the configuration take effect.

PreCommit:
TrailingWhitespace:
enabled: true
exclude:
- '**/coverage/*html' # Ignore trailing whitespace in generated files

PostCheckout:
ALL: # Special hook name that customizes all hooks of this type
quiet: true # Change all post-checkout hooks to only display output on failure

IndexTags:
enabled: true # Generate a tags file with `ctags` each time HEAD changes
3 changes: 3 additions & 0 deletions .rubocop.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
AllCops:
Exclude:
- Gemfile.lock
9 changes: 9 additions & 0 deletions 000-cover.es.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Creando Aplicaciones Distribuidas con Rails

## Usando Protocol Buffers, NATS y RabbitMQ

### Kevin Watson

Traducción al Español: Luilver Garcés Briñas

[Siguiente >>](001-preface.es.md)
60 changes: 60 additions & 0 deletions 001-preface.es.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
## Prefacio a la edición en Español

Bienvenido a *Creando Aplicaciones Distribuidas con Rails*.

Ruby on Rails es una plataforma construida sobre el lenguaje de programación
Ruby. La plataforma Rails provee las herramientas necesarias para construir
aplicaciones con bases de datos y ha logrado una popularidad generalizada,
actualmente muchos sitios populares corren sobre Rails, entre los que se
incluyen Shopify, Basecamp y Github.

Una arquitectura de aplicaciones distribuidas define modulos especializados o
componentes de un sistema en el cual, como un todo, proveen la funcionalidad que
los usuarios requiren. Las aplicaciones distribuidas pueden ser configuradas
para escalar tanto hacia arriba como hacia abajo según sea necesario,
especificamente por aquellos módulos que requieran un poder de cómputo adicional
. Por ejemplo el módulo que muestra el formulario para el inicio de sesión puede
no requerir mucha potencia de cómputo pero el que optimiza las fotos que suben
los clientes puede necesitar ponerlas a escala cada vez que un usuario añade un
conjunto nuevo de imágenes.

Este libro te adentrará a través del proceso de crear aplicaciones distribuidas
usando Ruby on Rails. Discutiremos aplicaciones monolíticas las cuales serán a
su vez divididas en unidades más pequeñas (microservicios) y describiremos
algunas formas de compartir datos entre estos microservicios. Usaremos un
un pequeño grupo de gemas de Ruby que han sido generosamente liberadas por
[MX][] para su uso por parte de la comunidad de código abierto.

MX es una compañía de servicios financieros basada en Utah. Sus miembros hemos
desarrollado una plataforma, desde sus inicios, distribuida y heterogénea que
procesa y analiza miles de millones de transacciones financieras cada mes.
Las contribuciones de MX a los estándares abiertos Protobuf, RabbitMQ y NATS
incluyen, pero no se limitan a, las siguiente gemas: `active_remote`,
`protobuf-nats`, `action_subscriber`, `active_publisher` and
`protobuf-activerecord`. Discutiremos cada una de ellas con detalles a lo largo
de este libro.

Ruby por su parte continúa evolucionando y ganando en popularidad. Las
contribuciones de MX a la comunidad de código abierto ayudan a asegurar que Ruby
coninúe siendo una opción viable para diseñar y desplegar modernos sistemas
distribuidos.

Debido a que la plataforma de MX está construida sobre estándares abiertos (Ej:
Protocol Buffers, RabbitMQ y NATS) es agnóstica a los lenguajes de programación
que sean empleados para crear nuevos servicios sobre ella. Siempre y cuando un
servicio se comunique usando mensajes Protobuff y se conecte a NATS o a
RabbitMQ podrá responder a mensajes desde cualquier aplicación escrita en
cualquier lenguaje de programación soportado.

Inlcuso si lenguaje no fuera Ruby, ojalá este libro brinde una visión general de
cómo diseñar y construir servicios distribuidos.

Hemos querido llevar al público hispanoparlante esta obra de valor incalculable
ya que casi toda la información relativa al desarrollo de microservicios en la
nube se genera en países en los que no se habla español. Esto provoca que sea
difícil para nosotros acceder en nuestro idioma nativo a información actualizada
y de calidad sobre estos temas. (N. del T.)

[Siguiente >>](002-who-is-this-book-for.es.md)

[MX]: https://mx.com
10 changes: 10 additions & 0 deletions 002-who-is-this-book-for.es.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
## ¿Para quién es este libro?

Este libro es para cualquiera que esté interesado en desarrollar una plataforma
distribuida compuesta por múltiples aplicaciones, también conocido como una
plataforma de microservicios. Aunque todos los ejemplos a continuación están
escritos en Ruby, usando la plataforma Ruby on Rails, un desarrollador de
software puede adentrarse y traducir la funcionalidad propuesta usando el
lenguaje de programación y plataforma de su preferencia.

[Siguiente >>](003-whats-in-this-book.es.md)
24 changes: 24 additions & 0 deletions 003-whats-in-this-book.es.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
## ¿Qué contiene este Libro?

Este libro está compuesto por muchas secciones a lo largo de las cuales
discutiremos diferentes patrones de arquitectura para desarollar systemas
distribuidos o no tan distribuidos. También discutiremos varios métodos de
comunicación de datos entre las diferentes aplicaciones.

Discutiremos además la plataforma Ruby on Rails y los ladrillos necesarios, en
todo proceso constructivo, para proveer acceso a los datos que nuestra
aplicación procesará. Analizaremos plataformas de comunicación via mensajes,
entidades de modelación de datos y sus relaciones en un entorno distribuido.

Daremos los pasos necesarios para armar un nuevo entorno que consista en un
servidor NATS y dos aplicaciones Rails, una con un modelo soportado por una
base de datos y otra con un modelo que accede de manera remota a los datos
de la primera aplicación.

Debatiremos sobre mensajes orientados a eventos y cuándo es apropiado; mientras
construimos dos aplicaciones que se comunican usando RabbitMQ.

Por último construiremos una plataforma que use ambos patrones de arquitectura:
síncrono y orientado a eventos, para compartir los datos entre los servicios.

[Siguiente >>](004-what-you-need.es.md)
2 changes: 1 addition & 1 deletion 003-whats-in-this-book.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
## What's in This Book?

This book has several sections. We'll discuss several architectural patterns for building distributed or not-so-distributed systems. We'll discuss various methods of moving data between applications.
This book has several sections. We'll discuss several architectural patterns for building distributed or not-so-distributed systems. We'll discuss various methods of moving data between applications.

We'll discuss the Ruby on Rails framework, and the building blocks that provide access to the data your application will process. We'll discuss messaging platforms. We'll discuss modeling data entities and their relationships in a distributed environment.

Expand Down
18 changes: 18 additions & 0 deletions 004-what-you-need.es.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
## Lo que necesitaremos

Necesitaremos una computadora que pueda correr Docker.[^1] Necesitaremos, de
manera opcional, connección a Internet si deseamos descargar el código de
ejemplo.

Todas las herramientas presentadas en este libro pueden ser utilizadas de
manera gratuita. El software que usaremos es tanto gratuito como de código
abierto y puede ser descargado, instalado y usado sin costo adicional.

Los proyectos presentados en este libro fueron desarrollados en una MacBook con
un entorno de contenedores usando Docker Desktop. Los comandos debieran funionar
de igual manera si se utiliza Docker para Linux, Windows o macOS.

[^1]: En el momento de esta edición Docker Desktop y Colima fueron probados con
éxito.

[Siguiente >>](005-online-resources.es.md)
47 changes: 47 additions & 0 deletions 005-online-resources.es.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
## Recursos en línea

El código fuente al que se hace referencia en este libro está disponible para
su descarga en [Github][]. Podemos descargar y ejecutar el código de ejemplo o
construir las mismas aplicaciones desde cero siguiendo los capítulos 9, 12 y 13.

Adicionalmente al código de ejemplo en Github en este libro se referencian los
siguientes sitios web:

#### Active Publisher y Action Subscriber

* https://github.com/mxenabled/action_subscriber
* https://github.com/mxenabled/active_publisher

#### Active Remote

* https://github.com/liveh2o/active_remote
* https://github.com/liveh2o/protobuf-activerecord

#### Docker

* https://docker.com
* https://docs.docker.com/compose

#### NATS

* https://nats.io

#### Protocol Buffers (Protobuf)

* https://github.com/abrandoned/protobuf-nats
* https://github.com/ruby-protobuf
* https://github.com/ruby-protobuf/protobuf/wiki/Serialization

#### RabbitMQ

* https://www.rabbitmq.com

#### Ruby y Ruby on Rails

* https://www.ruby-lang.org
* https://rubygems.org
* https://rubyonrails.org

[Siguiente >>](006-acknowledgements.es.md)

[GitHub]: https://github.com/kevinwatson/rails-microservices-sample-code
19 changes: 19 additions & 0 deletions 006-acknowledgements.es.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
## Dedicatoria

Primero me gustaría agradecer a mi esposa, Mónica, por su paciencia y
comprensión cuando persigo aficiones tales como escribir.

Me gustaría agradecer a mi empleador, [MX][], así como a las muchas personas que
han construido esta compañía, por su experiencia y sus discímiles contribuciones
al ecosistema de Ruby on Rails. Ellos han publicado documentación valiosa y
numerosas gemas de Ruby los cuales permiten desarrollar microservicios en Ruby
on Rails de manera sencilla hoy.

Agradecimientos especiales a Chris Miller quien ha sido mi mentor en Ruby on
Rails durante muchos cambios de posición laboral. Me gustaría también agradecer
a Igor Morgunov, Naoto Suzuki, Luilver Garcés Briñas, Mark Oveson y Sheldon
Teerlink por sus contribuciones y retroalimentación para con este libro.

[Siguiente >>](007-copyright.es.md)

[MX]: https://mx.com
14 changes: 14 additions & 0 deletions 007-copyright.es.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
### Creando Applications Distribuidas con Rails

#### Usando Protocol Buffers, NATS y RabbitMQ

Todos los derechos reservados

Copyright © Kevin J. Watson

La información y técnicas empleadas por el autor en este libro se esperan sean
confiables. Sin embargo el autor no garantiza la precisión o completitud de los
mismos y no se hace resposable for errores, omisiones o el resultado que
se obtenga del uso de dicha información.

[Siguiente >>](008-table-of-contents.es.md)
79 changes: 79 additions & 0 deletions 008-table-of-contents.es.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
### TABLA DE CONTENIDO

* [Capítulo 1 - Microservicios](020-chapter-01.es.md)
* Arquitectura del Servicio
* Más acerca de los microservicios
* ¿Por qué debemos usar microservicios?
* Recursos
* Recapitulando
* [Capítulo 2 - Comunicaciones del Servicio](030-chapter-02.es.md)
* Introducción
* Protocolos
* Serialización de datos
* Sistemas de mensajes
* Recapitulando
* [Capítulo 3 - Ruby y Ruby on Rails](040-chapter-03.es.md)
* Ruby
* Ruby on Rails
* Recursos
* Recapitulando
* [Capítulo 4 - Active Record y Active Model](050-chapter-04.es.md)
* Introducción
* Recursos
* Recapitulando
* [Capítulo 5 - Active Remote](060-chapter-05.es.md)
* Introducción
* Filosofía
* Diseño
* Implementación
* Recursos
* Recapitulando
* [Capítulo 6 - Sistemas de Mensajes- NATS](070-chapter-06.es.md)
* Introducción
* Ejecutémoslo
* Recursos
* Recapitulando
* [Capítulo 7 - Relaciones de Datos](080-chapter-07.es.md)
* Introducción
* Llaves Primarias y Foráneas
* Llaves Naturales Vs. Sustitutas
* Base de Datos Vs. Applicación Generada
* ¿Cuándo usar cada una?
* Recursos
* Recapitulando
* [Capítulo 8 - Protocol Buffers (Protobuf)](090-chapter-08.es.md)
* Introducción
* Filosofía
* Implementación
* Recursos
* Recapitulando
* [Capítulo 9 - El Sandbox de Microservicios de Active Remote ](100-chapter-09.es.md)
* Introducción
* Instalar Docker
* Implementación
* Recursos
* Recapitulando
* [Capítulo 10 - Mensajes Orientados a Eventos](110-chapter-10.es.md)
* Introducción
* Implementación
* Recapitulando
* [Capítulo 11 - Sistemas de Mensajes - Rabbit MQ](120-chapter-11.es.md)
* Introducción
* Ejecutémoslo
* Recursos
* Recapitulando
* [Capítulo 12 - El Sandbox de Mensajes Orientados a Eventos](130-chapter-12.es.md)
* Introducción
* Lo que vamos a necesitar
* Implementación
* Recursos
* Recapitulando
* [Capítulo 13 - Active Remote con Sandbox Orientado a Eventos](140-chapter-13.es.md)
* Introducción
* Lo que vamos a necesitar
* Implementación
* Recursos
* Recapitulando
* [Capítulo 14 - Sumario](150-chapter-14.es.md)

[Siguiente >>](010-chapter-00.es.md)
6 changes: 6 additions & 0 deletions 010-chapter-00.es.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
> Nosotros, los que picamos simples piedras, deberíamos estar siempre
> imaginando catedrales.
>
> Andrew Hunt, The Pragmatic Programmer: From Journeyman to Master

[Siguiente >>](020-chapter-01.es.md)
Loading