Skip to main content

Command Palette

Search for a command to run...

Desafios de armar productos fuera de lo convencional

Updated
7 min read
Desafios de armar productos fuera de lo convencional

Que puedo ver de lo que se suele construir

Para la mayoria de personas en el ultimo tiempo el furror era (y en algunos casos sigue siendo) lo que es el modelo SaaS, en lo que fueron saliendo plataformas que ayudaban al desarrollador a simplificar gran parte de las operaciones y los mismos se podian enfocar en programar unicamente y no tener que pensar en nada + otros recursos interesantes gratis, muchas personas piensan y saben que hacer un app que escale a al menos 10 mil usuarios (no concurrentes, pero si totales) hoy en dia gratis es totalmente factible y rapido, no solo por la IA, sino por los servicios que ya existen de antes + la cantidad de codigo y problemas ya resueltos que existen en el ecosistema.

Para muchos por ej es bastante normal que si no consiguen trabajo se pongan a buscar cosas freelance en su ciudad, donde quizas hacer un turnero sabes que es facil, rapido y a algun negocio le puede server, algun catalogo de stock o una solucion custom que mas que un frontend fullstack/serverless + una db no vas a necesitar.

En donde me meti yo?

Primer idea | Mainhost (Hosting de Juegos)

Si bien no me meti en nada revolucionario, mi primer proyecto justamente tiene unos retos interesantes a nivel costes, desde el vamos aun sea que lo quiera monetizar o hacer gratis el coste esta, el hacer un hosting conlleva que tenes que tener cierto grado de recurso para el usuario final ya que por ej levantar un servidor de un juego necesitas escribir en I/O constantemente para ir almacenando un estado, esto se le llama una app stateful

donde las que mencione al principio son stateless, siendo las mismas apps es indiferente de donde se este desplegado, sabemos que vamos a solicitar recursos a una DB que no le importa el origen, mientras que para una app que maneja estados y por ej guarda bytes en disco, poniendo el caso de minecraft el estado del mundo, la misma esta constemente guardando cosas de lo que hacemos, entonces no es algo que facilmente puedas correr en una lamba o una arquitectura serverless como suele ser estas apps que digo que es barato u practicamente gratis de hostear.

Dicho esto, mainhost hoy en dia tiene un tier gratuito, donde vos podes levantar servidores gratis de hasta 4 personas

Esto es gratis? obviamente no, estoy pagando una VPS en contabo como para poder hostear el tier gratuito, aun si este mismo no existiera cada jugador tendria que pagar una VPS o yo tener una grande y alojar todo ahi (donde ellos pagarian por usar una parte del recurso y no seria lo ideal por que si uno tiene spike de trafico afecta al otro en el mismo host) no habria forma comoda de poder alojar los mundos sin rentar servidores o comprar hardware.

Servidores Publicos

Otro quilombo donde me meti es que para ganar visibilidad me puse a armar lo que es una comunidad + servidores comunitarios ej

Maincraft

Para este caso necesito donde alojar esto, siendo que tengo un homelab modesto le dedique una VM con suficientes recursos para que viva

Pero bueno, aca ya tenemos un coste fijo (en este caso el mantenimiento de esa computadora, sino tendria que ser una VPS como tal y seria coste fijo de una cuota)

Veloren

Mismo caso que minecraft, el servidor vive en una de mis computadoras locales y gasta sus recursos

Ademas de no solo necesitar recursos fisicos, es mantener una web con informacion de cara a las personas para llamarles la atencion o mostrarles como el mundo avanza

Eso es lo unico?

Y la verdad que no, faltan muchisimas features para este producto asi que tiene un camino largo y muchos problemas por pensar como resolver!

Segunda idea | HenKaiPan (ASPM)

Este tiene sus cosas entretenidas, si bien la idea podria ser statefull (cierta parte) tiene muchos componentes adicionales + que la forma que lo pense a nivel separacion termino siendo un caos divertido, a diferencia de mainhost que es un monorepo potentisimo

Mi querido HenKaiPan es una deformidad que tiene mezcla de repos privados y publicos (Mainhost por ej es un unico monorepo todo privado entonces es facil de mantener)

Como esta compuesto esto?

  • HenKaiPan -> App que contiene 2 binarios (API + Worker en forma de package publico) + Frontend que seria el dashboard donde se gestiona todo.

  • HenKaiPan-self-hosted -> Repositorio (Publico) de cara a los usuarios interesados en levantar su propia instancia con docker-compose o kubernetes, mismo el que contiene los releases + changelog del producto.

  • HenKaiPan-docs -> Documentacion mezclada (es un package) tenemos cosas de la app privadas, docs de la landing, docs para el selfhosted, para la action, etc.

  • HenKaiPan-landing -> Pagina de presentacion publicitaria + documentacion para lo que es selfhosting u otra funciones de la app.

  • HenKaiPan-action -> Github Action enfocada en poder comunicarse desde un CI/CD hacia tu instancia de HKP.

Plus hay unas cosas sueltas por ej una repo de skills de mi empresa donde en general pongo procesos repositivos o cosas que son mas macro y no aplican a un producto/repo en particular, en este caso tengo una skill de release que valida y prepara todo para ir manejando version por version.

Otras complicaciones

Cuales tiene este producto? bueno bastantes, primero que la idea es bastante ambiciosa, el querer unificar resultados de multiples motores de scanners tiene 2 problemas:

  1. El coste de poder correr los mismos

  2. La licencia de los mismos

Siendo que la segunda puede ser mas problematica por que directamente seria imposible correr algunos scanners, la primera esta mas relacionada a costes, los binarios de henkaipan son pesados, ya que por ej el worker actualmente contiene los binarios de cada motor -> SAST, SCA, IaC, Container, Secretos

Y siendo que tengo mas de 1 por motor, esto suma un peso importante, como la idea del producto es hacer validaciones cruzadas, puede no ser suficiente eso asi que el layer encima es lo que al menos para selfhostear termina de mandar a la mierda los costes y es la posibilidad de utilizar LLMs self hosted para ciertos procesos, ej si disponemos de un finding de un motor que no tiene una descripcion, tomamos un modelo chico como gemma4:e4b (9GB) y podemos generar este summary

Ademas de disponer de otras capabilities que si bien serian mejor usarlas con un LLM remoto de un provider grande, doy la opcion de poder correrlo desde local lo cual hace que el proyecto sea pesadisimo de self hostear.

Las funcionabilidades que tengo con LLMs para esta pantalla por ej son

  1. Generar un summary para los scanners que no traen uno

  2. Generar una validacion cruzada de los scanners, tenemos 2 SAST? bueno tomamos los resultados y se los pasamos a un LLM para ademas de tener confianza por 2 findings que encontro un scanner, analizar el contexto con la IA

  3. Generar una guia de remediacion textual para ver como preparar un fix a nivel conceptual (a futuro faltaria armar una PR de la misma forma)

Cualquiera de estas ideas en un producto maduro o con tiempo se podrian hacer muchas sin un LLM, pero para el mio que esta en etapas tempranas es la forma mas rapida/facil y poder seguir avanzando pero eleva los costes iniciales, sea por self hostear o pagar tokens.

Todavia hay mas

Que otra particularidad tenemos en este proyecto? el uso de licencias, si bien el proyecto es gratis y self hosteable hay features limitados detras del uso de las mismas, ofrezco licencias gratis a estudiantes, proyectos opensource y cualquiera que no se lo pueda costear sin problemas, pero la idea es que las big tech a la larga pongan su $$$ con lo cual separe el proyecto detras de ese schema y distribuyo paquetes sin dar acceso al source code.

Conclusion

Diviertanse con los costos si hacen proyectos como estos! Y avisen si necesitan ayuda :)