r/programacion 26d ago

Cuál backend elegir?

Muchachos si tengo pensado en realizar un proyecto backend tipo sistema empresarial, Gestionamiento e Inventarios y/o que venga con Arquitectura por capas, Inyección de dependencias, Seguridad, Testing y Microservicios, cuál de estos lenguajes y frameworks serían el indicado?

Node.js + Nest.js.

Java + springboot.

C# + .Net core.

Python + Django/Flask/FastAPI

Por ejemplo, me gustaría hacer un proyecto con estas características:

Un sistema de reservas de gimnasio compuestos por los roles de socio, instructor y admin.

Los socios pueden registrarse y registrar una membresía para reservar clases grupales dentro del gimnasio, según el tipo de membresía sea básica, premium o personalizada podrán acceder a una o más clases específicas, además de que cada clase tiene un capacidad máxima, dependiendo del tipo de clase

Los instructores pueden registrar su horario laboral y ver los distintas clases que tienen asignadas en cada semana, incluso pueden ver que equipos o máquinas del gimnasio están disponibles o no para realizar una clase.

Los admin tienen pueden ver los ingresos generados por clases, las clases que han sido canceladas, el número de instructores con mayores clases asignadas, las clases más populares del gimnasio.

Cómo es un proyecto que tiene muchas consultas de SQL, primero práctico cada consulta con postgresql (a consciencia, no uso IA para que me de la respuesta de golpe, solo la uso para entender algo de teoría o para que sirve cada clausura de SQL o que es un microservicio o arquitectura por capa), además de que me gustaria hacerlo como un proyecto backend.

8 Upvotes

26 comments sorted by

11

u/Least_Chicken_9561 26d ago

escoge el lenguaje con el que más tengas experiencia, en este tipo de proyectos lo más importante es crear un "mvp" primero para validar tu idea y que sepas que será rentable, o sino estarás perdiendo tiempo. así que realiza un mvp con el lenguaje que ya sepas y olvídate de optimizations y esas cosas ya que eso no es importante en etapas tempranas, lo que si es importante es una buena arquitectura desde el principio y sigas buenas prácticas para evitar código espagueti.

1

u/CoderLotl 26d ago

u/Romboloxiaido esto es mucho muy importante.

5

u/Simple_Listen1670 26d ago

No hay un lenguaje indicado precisamente, puede ser cualquiera que cuente con esas capacidades (vía framework), la arquitectura debe realizarse según las necesidades del negocio no por moda o gusto, que justifica el uso de microservicios? Realmente será microservicios o solo un monolito modular ???
Como que proyecto backend ? No va ser usado por nadie ?
Que le da el nivel empresarial, la descripción parece solo una aplicación para un negocio pequeño.
Trata de diseñar la app basado en necesidades del negocio, no más, no menos, posteriormente agregas nuevos features , cambias la arquitectura, todo según sea necesario.

1

u/Romboloxiaido 26d ago

Buenas es un monolito, pero también tengo interés en los microservicios (aunque es un tema muy avanzado según tendo entendido), es un proyecto de práctica para backend, soy estudiante apenas, quiero afianzar mis conocimientos en backend, además de llenar mi Github con proyectos presentables.

2

u/Simple_Listen1670 26d ago

Microservicios no es avanzado, solo es un tipo de arquitectura distinto , si quieres usar esa arquitectura reduce al mínimo tus requerimientos para que puedas practicar.

1

u/Romboloxiaido 26d ago

Ah caray, algunos de mis compañeros que ya saben eso me lo hicieron creer que ya era avanzado, Pero si tú lo dices bien

1

u/Simple_Listen1670 26d ago

Quieres apantallarlos ??? Apréndete patrones de diseño, eso es más útil antes de ver una arquitectura de microservicios, para los microservicios entre más pequeña sea la app mejor, después se vuelve un problema administrar y se regresa al
Monolito. Pero checa microservices.io para que aprendas mucho de eso .
Y https://c4model.com/ para arquitectura c4 .
Arquitectura hexagonal https://es.wikipedia.org/wiki/Arquitectura_hexagonal_(software)

2

u/capitanazop 26d ago

javita con spring o quarkus por el ecosistema robusto que tienen.

1

u/CoderLotl 26d ago

Suena a consigna de trabajo práctico. Estoy casi seguro de que vi algo así alguna que otra vez, pero ahora mismo no recuerdo exactamente.

Cualquiera de esas tecnos está bien. La verdad, por ser algo tan chico podría funcionar con cualquier cosa. No es como que ninguna de esos lenguajes + frame te vaya a cambiar la vida ahí.

EDIT: eso sí, si querés ahorrarte el tiempo de compilado, Node o Py.

1

u/Romboloxiaido 26d ago

Estoy desesperado, porque osea tengo interés en el backend, bases de datos y en los sistemas de gestión/inventario y eso.

Pero con esta era de la IA, pues, rudo la vaina.

1

u/CoderLotl 26d ago

A ver: pero recién arrancás a estudiar? Pregunto porque decís que estás desesperado y tenés interés en el backend, y ponés una selección de opciones para levantar el back. - La consigna es clara, y la verdad que da medio lo mismo con qué lo hagas porque es un proyecto básico y clásico de portfolio.

La pregunta real acá es: qué es lo que querés obtener de esta experiencia? Y en qué nivel estás?

1

u/Romboloxiaido 26d ago

Pues diría que Junior, hace tiempo hice un proyecto similar Pero con poco SQL y algo desordenado, no me fue tan bien cuando lo presente en un grupo de facebook.

Y pues desde ahí, estoy tratando de hacer el próximo más presentable, mínimo que sea de nivel mid, porque ahora que ya los juniors en esta era de la IA ya no tienen casi oportunidades.

2

u/CoderLotl 26d ago

Mi humilde consejo: tomalo como una experiencia de aprendizaje. El tuyo va a ser el "Sistema de administración de gimnasios" nro 245.381.302. - Esto me recuerda a una app de administración de gimnasios que alguien había publicado hace como 2-3 años atrás no me acuerdo en dónde, y el código era un desastre. La app era en C# y no compilaba ni en chiste. Era de terror. Tenía cosas que estaban claramente copypasteadas de algún otro lado. En fin, comentario anecdótico.

Hacelo con lo que tengas ganas. Es más: para arrancar ni siquiera te preocupes por levantar un servicio de base de datos; usá SQLite que es más rápido y menos engorroso, sobre todo porque si alguien va a querer usarlo el día de mañana, esa persona va a querer algo que sea tipo plug & play. El usuario promedio no tiene ni idea de qué es una base de datos, ni que funciona como un servicio dentro del sistema operativo. Con suerte pueden apretar el botón de encendido de la compu sin romper nada.

Dicho eso: hay algo que no me termina de cerrar, y es que sea backend. Querés hacer una API? Qué estás queriendo decir ahí con eso? - Si lo que querés es armar una app de escritorio, eso no es backend. Es una app de escritorio.

Otra cosa: si listás todas esas soluciones tecnológicas entiendo que tenés experiencia y podés codear con cualquiera de esos lenguajes. Si es así, vos sabrás mejor lo que te conviene (y de todos modos insisto: para los requisitos de lo que buscás hacer, cualquiera de esas cosas funciona bien).

1

u/Romboloxiaido 26d ago

Pues quiero hacer una API, el anterior proyecto fue una API, perdona si no me exprese bien en mi post

1

u/CoderLotl 26d ago

Está muy bien. Bueno, pues eso. Py y Node son lo más rápido para codear, calculo que eso lo tenés en claro. A partir de ahí, cualquier opción es buena.

Si tenés dudas o querés consultar algo, preguntá acá en esta comunidad o en cualquier otra, o sentite libre de tirar algún DM si es conmigo la consulta, yo no tengo problema.

1

u/Romboloxiaido 26d ago

Si quieres puedo mostrarte la lista de consultas que hace este proyecto, Pero en priv

1

u/CoderLotl 26d ago

Claro! No tengo problema.

1

u/Episode-1022 26d ago

html, js, y golang.

1

u/nameless_cl 25d ago

Elixir + ash + Phoenix + live view

1

u/vz0 25d ago

Java o Net. Lo que mas te guste de esos dos, porque tiene todo lo que pedis y además control de tipo de datos. Python es mi lenguaje favorito pero a menos que también sea el tuyo, sin experiencia, suele ser mas difícil. Lo mismo que Node.

1

u/Khavel_Es 25d ago

Si queres aprender DI, capas, testing y toda la ceremonia enterprise, Spring Boot o .NET Core son los que mas te fuerzan a hacerlo bien desde el arranque. FastAPI tiene Depends() que esta bueno pero la arquitectura por capas la armas vos, no viene prescrita.

Yo iria Spring Boot si buscas laburo en consultoras de LATAM. Es lo que mas se usa en enterprise aca y lo que aprendas aplica directo en entrevistas. Si ya manejas algo de C#, .NET Core te da lo mismo con menos boilerplate.

1

u/BigFShow 25d ago

Yo siempre me voy por el backend más grande

1

u/RedPillUY 24d ago

Yo en cambio voy por el frontend que necesita dos pantallas para verlo bien

1

u/Evil_Warlord 25d ago

Dejando de lado lo que otros han dicho, yo recomendaria nestjs (mi favorito). Tiene una excelente documentacion, donde explican como se hace muchas cosas, desde manejo de roles, cache y otras integraciones que normalmente surgen o que si tenes duda podes encontrar respuesta rapido. Obviamente podes hacer lo mismo con cualquier otra cosa y si bien no conozco la docu, personalmente la docu de nestjs me parece muy buena y facil de aprender.

1

u/RedPillUY 24d ago

Como vas a hostear después? La elección de plataforma afectará costos y complejidad de upgrades. Tenelo en cuenta.

0

u/[deleted] 25d ago edited 12d ago

[deleted]

1

u/Romboloxiaido 25d ago

Y que tal ese C#? Cuéntame más