Feda /dev/ - No Javascript allowed

Normas
spoiler
Personas non gratas
Memes feda dev




desu
#51210pantocreitor:

no creo que vayamos a notar un salto abismal entre rust y go para la plataforma,

vais a notar un salto abismal en la facilidad de usarlo. cualquier fpero escribe go mas rapido que java en 2 semanas. para escribir rust al mismo nivel necesitas 2 años.

#51210pantocreitor:

(a nivel de velocidad de arranque, consumo de recursos y rendimiento).

a velocidad de arranque lo vas a notar, pero que clase de servicios son? si son servicios http por ejemplo o teneis un service discovery por medio o caches que refrescar o demas... ya teneis unos 30 segundos (5-60 segundos) de healthchecks y refrescos en estos servicios para que vuestra instancia sea usable. en nuestro caso por ejemplo 30 segundos healthcheck + refresco de caches en algunos. es decir aunque la maquina se levanta en 100ms vas a esperar 30 segundos en el peor caso el healthcheck.

levantas el servicio te registrars en el sd, actualizas caches... ponle 5 segundos de median optimistas. Os tarda java en arrancar mas de 5 segundos?

y a nivel de consumo de recursos y rendimiento, si es spring 3 async y todo bien hecho vais a ir varios miles de peticiones por segundo a un 10% de cpu en la instancia mas barata de aws. rust sirve para optimizar la tail latency, el 99 percentile y el max... porque creeis que teneis esas necesidades?

usais quarkus porque os hace gracia y rust porque os hace gracia.

1 respuesta
JuAn4k4

#51209 El precio/kg de dev Java es más barato.

1
pantocreitor
#51211desu:

vais a notar un salto abismal en la facilidad de usarlo. cualquier fpero escribe go mas rapido que java en 2 semanas. para escribir rust al mismo nivel necesitas 2 años.

#51211desu:

a velocidad de arranque lo vas a notar, pero que clase de servicios son?

En el caso mas "grave" es un monolito multimodular que tarda su buen minuto y pico en arrancar, súmale los healthchecks, conectarse a colas, caché, etc... A esto añade que está en un baremetal y sale bastante caro tener uno en stand by para cuando sea necesario (todo esto es otra historia y viene a raiz de las necesidades de un cliente). Al final el coste y el tiempo necesario para levantarlo hacen que se quiera pasar a algo mejor (en general).

#51211desu:

y a nivel de consumo de recursos y rendimiento, si es spring 3 async y todo bien hecho vais a ir varios miles de peticiones por segundo a un 10% de cpu en la instancia mas barata de aws. rust sirve para optimizar la tail latency, el 99 percentile y el max... porque creeis que teneis esas necesidades?

Ahora mismo tenemos versiones de spring y java bastante antiguas en este monolito, el coste general de actualizarlo es grande y por poca diferencia de coste/tiempos sale rentable rehacerla pensando en el futuro.
Sobre las necesidades, sin entrar demasiado en detalle, eventos en vivo de todo tipo, con cientos de miles de conexiones en momentos puntuales y muchas suscripciones a contenidos varios que se deben actualizar en tiempo real.

#51211desu:

usais quarkus porque os hace gracia y rust porque os hace gracia.

Nope, de momento no los usamos. Estamos analizando muchas situaciones, costes, rendimiento, etc... (hay varios departamentos haciendo pruebas cada uno mirando un poco por lo suyo) y se baraja Java 21 + Spring Framework 6, Java 21 + Quarkus y Rust. Con varios analisis, pruebas de estrés y demás y según el aspecto que se analice algunas elecciones son mejores que otras, pero ninguna es la definitiva a día de hoy.

Luego ya está el tema de pequeños microservicios transversales que se están haciendo con diferentes tecnologías para irlas probando, etc...

Aquí la idea no es seguir una moda o un gusto, sino tener el mejor producto posible (y que funcione fino)

EDIT: al final lo que diga el CTO junto con su corrillo es lo que se hará, pero por mi parte lo unico que puedo hacer es proporcionar toda la info qu epueda con pruebas tangibles y si me dicen que tenemos que hacer las cosas nuevas en .net, Go, Rust, Java, Python, JS o lo que sea pues se acabará haciendo

2 respuestas
Kaledros

Nosotros hemos pasado de Kotlin a Go y la latencia media de un servicio son 10ms. Es una puta barbaridad.

Wei-Yu

pero no entiendo aquí tenéis todos servicios cpu bound? en mi caso es todo sql y http que, en la mayoría de situaciones, acaba siendo sql después de varios saltos http

y vaya entiendo que mi situación es la normal para el 99% de la gente, en mi caso tenemos un path cpu bound en un servicio que podemos mover a la db desnormalizando y es lo que estamos haciendo... xd

desu

#51213 pues partir el monolito segun los bottleneck de trafico, re hacer en Go y a correr.

https://arnaudiaz.com/blog/fix-a-mono/

si necesitais una consultoria, por 20k euros yo os puedo ayudar en el proceso.

empezad añadiendo metricas a los casos de uso como expongo y analizando los failure rate y las latencias.

si es un monolito muy grande un par de profiles simples tambien pueden ir bien... porque el cpu bound os va a joder el throughput del trafico io bound.

sacar todo el io bound en servicios de go os dara performance CASI perfecta, en median y percentiles hasta el 95% casi lo mismo que rust sin esfuerzo.

luego el CPU bound deberiais mirar si os interesa usar librerias en java o go... o que es lo mas optimo ahi. al final si puedes compilarlo y meterlo en el binario de go mejor.

2 respuestas
pantocreitor
#51216desu:

pues partir el monolito segun los bottleneck de trafico

Eso ya está mas que analizado y de hecho hay bastantes cambios ya live que han paliado esos cuellos de botella, pero hay que mirar al futuro (sea con la tecnología que sea)

#51216desu:

empezad añadiendo metricas a los casos de uso como expongo y analizando los failure rate y las latencias.

Done hace meses

pantocreitor

Doblepost

desu
#51213pantocreitor:

según el aspecto que se analice algunas elecciones son mejores que otras, pero ninguna es la definitiva a día de hoy.

por que?

1 respuesta
r2d2rigo

Casi 2024 y aún pensáis que Go va a tener un papel relevante algún día. Cuando salga el próximo lenguaje de moda decidle adiós.

1 respuesta
pantocreitor

#51219 El primer ejemplo que se me viene a la mente es el driver reactivo de Oracle. Dónde mejor funciona es en Spring, luego en Rust (muy poca diferencia) y dónde peor va es Quarkus.
Redis funcionaba también diferente pero este no recuerdo el resultado.
Consumo de memoria, cpu, GC y demás (aquí se fijron mucho los de infra para temas de presupuestos y tal) Rust se come a Spring o Quarkus, al igual que en rendimiento en pruebas de carga y estrés con 150k de suscripciones a conteido live con una media de 10 actualizaciones/s por evento y unos 200 eventos.

Por otro lado desventajas ya no de tipo tecnológico son en base al conocimiento. Tenemos gente que usa varios lenguajes, pero nadie es un "experto" en Rust.

1 respuesta
desu

#51221 demasiado tiempo dedicado a esos analisis. son analisis inutiles porque a la que empiezas a partir y liberar cpu y carga, los resultados cambiaran completamente. de que te sirve analizar el GC de un monolito que vas a partir? 0 sentido. ademas deduzco que los profiles ralizados son cpu bound, porque io bound es muy muy dificil de realizar y hay que hacerlo a mano. hoy en dia aun no hay tooling para ello accesible.

veo poca experiencia en el CTO y la gente tomando decisiones, espero que no seas tu.

pantocreitor

Las pruebas no se han hecho sobre el monolito, sino con las tecnologías que se quieren probar, los datos del monolito los tenemos porque se lleva usando desde hace unos 10 años y hay datos para aburrir

Y las pruebas son CPU, de IO he visto poca cosa (se ha hecho algo pero ahí no he metido mano).

Según lo que dices deberíamos rehacer la plataforma en Go o partir el monolito y usar Spring actual (hay que rehacer casi todo), pero que hagamos pruebas y analizcemos opciones lo ves mal. No entiendo el punto de vista la verdad.
¿Ves mal que se tome una decisión con datos tangibles? Desde mi punto de vista, analizar una situación y hacer pruebas para ver que solución de las propuestas te da mas benficios y menos problemas respecto a otras es un buen camino a seguir (partiendo de que el monolito se va a partir, eso es algo que está claro).

El tema está en que tu propones 2 opciones y nosotros estamos barajando varias mas (de hecho Go está como opción, pero nadie ha hecho analisis o pruebas).

Al final la parte dónde curro consiste en eso, invertir tiempo en mejorar y si se necesita algún componente transversal crearlo de la mejor manera posible.

Por cierto, si tuviese que tomar yo decisiones, por menos de 150k no me mojo jajajajaja

2 respuestas
B

#51223 Es todo cuestión de tener un buen horario, levantarse a las 4AM y cagar en rellanos ajenos mientras todo el mundo duerme

2
desu

#51223 bastante mal si, por 20k te doy la respuesta.

#51223pantocreitor:

Según lo que dices

eso no he dicho.

vuestor procedimiento esta mal, las pruebas son datos incorrectos, bastante perdida de tiempo si.

como dije atras, el que lleva eso no tiene ni idea de lo que hace.

1 respuesta
pantocreitor

#51225 Cierto, ha sido partirlo según bottlenecks y rehacerlo en Go

1 respuesta
desu

#51226 solo partir el monolito y mantenerlo en java tal cual lo teneis ya te dara mejoras de rendimiento que haran todos vuestros analisis obsoletos.

en fin, como he dicho muchisimas cosas mal en el procedimiento.

si quereis hacerlo bien podeis contratarme y os hago una consultoria. si quereis un consejo rapido, re hacer en go es lo mejor y no hace falta pensarselo mucho.

nobody1

@gan2 soy yo, o desde que estás en google, te pasas el día en el hilo?

Arreglad el maldito buscador por favor!! :persevere:

2 respuestas
GaN2

#51228 para que vamos a arreglar algo que genera miles de millones estando roto? Fuera de coñas, hay alguna cosita chula que van a sacar para el buscador y otros productos de Google de los que te mandan emails de dog fooding. También te digo que lo mismo deciden matar algunas de esas features conociendo la empresa…

Sobre que me pasó el día en el hilo, gracias a dios aqui no tengo que ir apagando fuegos constantemente y me da más flexibilidad para organizarme como quiero.

1
desu

#51228 No lo he probado, si te animas:

https://kagi.com/

5 pavicos al mes.

1 respuesta
PhDfailer

Me siento aún más pajeet de lo que soy. Llevo 3 días estudiando 12h. Imagino que es lo normal al cambiar de empresa, ya lo viví con la primera.

Lecherito

#51230 pues me mola la idea, quizá lo pruebo. Por ahora estoy con duckduckgo pero los resultados son algo meh muchas veces

1 respuesta
pantocreitor

#51232 DuckDuckGo no era bing disfrazado de pato?

GaN2

Me acabo de enterar que Google ha abierto una nueva oficina en Malaga para cyber seguridad. Ya tengo destino para irme a trabajar en remoto

1 2 respuestas
desu

#51234 Google sigue con los 3 meses de remote work fuera de USA?

Si vas a España avisa y me apunto al coworking. Si quieres venirte a esquiar en invierno te invito.

3 respuestas
PhDfailer

#51235 solo invitas a googlers? a pajeets no?

JuAn4k4

#51234 La verdad es que Málaga es muy top, llevo ya varios años iendo para Enero y los espetos son lo mejor que hay en esta vida.

1 respuesta
GaN2

#51235 4 semanas/20 días bajo aprobación del manager. Fuera de eso sin son días puntuales sin problema, en Navidades me voy a Houston y curro 3 días desde allí. Te aviso si decido cogerme una semanas y me paso por allí

#51237 Malaga es top y si volviera a España es de los pocos sitios a los que me plantearía mudarme

1 respuesta
Kaledros

#51220 Una cosa no quita la otra. Que para hacer CRUDs de mierda sea más rápido que Java no signifique que no tenga nada de ecosistema y que si buscas algo no hay respuestas más allá de 2016. "Eso significa que está maduro el proyecto". Una polla, eso significa que no lo usa ni dios.

1 respuesta
desu

#51238 pues te lo han bajado JAJAJAJAJ antes eran 3 meses.

bueno el año que viene no planeo estar en españa mucho, estoy pensando volverme a asia en enero.

#51239 es que spring es una puta bazofia y su ecosistema mas...

estoy dandole estos dias para estudiar un poco y es que en 6 meses todo cambia... y hay mil maneras de hacer las cosas. hasta algo nuevo te lo deprecatean a los 4 meses y te ponen otra opcion y como todo aunque este deprecated arranca igual.. acabas teniendo un mix de mil maneras de hacer las cosas.

spring es caca. estoy montandome un servidor http full async con netty y dynamodb, con la sdk2 de aws tambien todo async. test containers y stub-runners y contract testing del copon... pero puta mierda que caos todo. vamos estoy haciendo el hello world de como hacer spring en el 2024 perfecto. y lo que me esta costando.

cada tutorial que miras usara unos bean de configuracion distintos... y ninguno funcionara para tu proyecto aunque lo tengas igual XD

2 respuestas