Tecnologías para un Core Bancario

Buenas Tardes, estoy por empezar en un nuevo trabajo, un banco nuevo, y al parecer hay que montar todos los sistemas del banco, estaba pensando proponer JDK 7 con Spring, Hibernate y JSF, con un Oracle y Tomcat. Mi duda viene con respecto a que sería mejor opción, o si las tecnologías que estoy mencionando son las mas adecuadas para un banco. Que opciones podría presentar. O talvés es mejor opción irme por el lado de JEE con EclipseLink, EJB y JSF. Estoy un poco confuso y talvés ustedes que tienen mas experiencia pueden orientarme.
Muchas Gracias
Saludos.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Concurrencia, concurrencia, concurrencia

Creo que en realidad lo más difícil de un sistema bancario es la concurrencia y que por lo general son sistemas no tolerantes a fallas.

Desde mi punto de vista te sugiero revisar el tema de concurrencia y sistemas distribuidos por qué es algo bien crítico, digo, es un banco y manejas dinero directamente, una transacción mal hecha y puede ser el acabóse.

Respecto a tecnologías, viendo por el negocio, creo que lo mejor sería no depender de ecosistemas externos y apegarse a los estándares. Creo que EJB puede ser una buena opción para muchos escenarios, eso si, si sabes cómo deben ser los EJB.

En cuanto a tecnologías de vistas, pues, a mi no me agrada mucho JSF, pero tiene la ventaja que no tiene ningún otro framework y es, que es el estándar definido. Pero, viene siendo lo de menos que tecnología de interacción uses, si te decantas por algo cómo EJB toda tu controlador/servicio estaría de ese lado, y a ti solo te bastaría con utilizar una interfaz que invoque las acciones de tu core en EJB.

Por otra parte, considero que sería buen momento para que fueras viendo que tal con Scala, tengo entendido que hay muchos bancos que implementan ciertas cosas en Scala principalmente por qué es un lenguaje enfocado a la concurrencia, escalabilidad y programación paralela. Si a eso le agregamos que puedes usar las librerías disponibles para la Java.

Imagen de rodrigo salado anaya

Core Bancario

No entendí muy bien lo que quieres o que recomendación quieres disculpa, pero tratare de ser general. Si ya hicieron la elección de quien va ha crear el programa para X o Y cosa y ese resulta que eres tu, olvida las recomendaciones y toma las mejores de tus experiencias, por otro lado debes meditar que es lo que vas a implementar primero y después elegir la tecnología.

No se trata de ir al mercado y decir "déme un kilo de esto y medio de aquello y un cuarto del otro". Mi recomendación es que borres toda tecnología de tu cabeza, decidas como la debería de quedar tu solución y luego buscar que tecnología se acopla mejor a tu solución.

¿Que opinas u opinan de mi comentario?

Saludos

Re: Core Bancario

Tienes mucha razón, pero, no sé yo si quién pregunta sea un Project Leader qué quizá no ha tenido roces con tecnología y busque más de qué tipo de gente necesita rodearse. O si es alguien a quién le dijeron así directo y pues no tiene la pericia de decidir.

Que parece que te basas más en el último perfil, dónde lo que dices tiene muchísimo sentido, aunque, ¿qué pasa si @fernandoba3 tiene experiencia desarrollando solo sitios tipo social media con rails?... Pues nada que no se adecúa bien y quizá es más por eso su pregunta, quizá él jamás ha desarrollado algo para bancos y por eso pregunta en la comunidad.

Ahora, no sé tú en que rubro trabajes, en mi caso trabajo para una empresa en donde nos enfocamos a centralizar bases de datos "desperdigadas" por todos lados, incluso agregamos a las bases de datos información que viene en ficheros csv y excel... por lo que estamos enfocados en bulk actions y pienso en el paradigma de bulk actions al momento de desplegar/insertar información y quizá no sea el enfoque correcto para otro tipo de aplicaciones.

Creo que nos precipitamos y no hemos visto cuál es la perspectiva de @fernandoba3. Sería genial que nos compartiera su perspectiva para poderle dar una mejor respuesta.

Imagen de ezamudio

Scala?

tengo entendido que hay muchos bancos que implementan ciertas cosas en Scala principalmente por qué es un lenguaje enfocado a la concurrencia, escalabilidad y programación paralela.

wishmaster, podrías decirme dónde leíste o escuchaste eso?

En mi experiencia, los bancos son bastante tradicionales y conservadores con el software que utilizan, no me imagino un banco adoptando Scala (a menos que sea un banco nuevo como en este caso).

Y al OP:

Perdón pero me parece preocupante que te hayan elegido o te hayas apuntado para una tarea así, pues no es nada sencilla, es mucha responsabilidad, y el simple hecho de que vengas a este foro a preguntar me hace pensar que no tienes la menor idea de por dónde empezar, por lo que no sé entonces cuál fue el criterio para ponerte a cargo de algo así.

Por qué JDK7? Por qué Spring? Por qué Oracle? Por qué Tomcat? Hibernate? JSF? Cada una de estas decisiones debe estar bien fundamentada y justificada, tecnológica y económicamente, pensando en ventajas y desventajas a corto, mediano y largo plazo. No es fácil evaluar esto, entiendo que tal vez por eso es que pones aquí tu duda, pero pues honestamente no sé qué responder.

Si como dice wishmaster eres alguien con experiencia haciendo redes sociales y aplicaciones de ese tipo pero nunca has realizado una aplicación financiera, pues... lo mejor sería que busquen a alguien con experiencia en software financiero (alguien que haya trabajado en la bolsa o en otro banco, en el área de desarrollo) y lo integren a su equipo.

La concurrencia es importante pero no es todo, es tan sólo un aspecto de lo que hay que cuidar. La redundancia, la seguridad informática, la integridad de los datos, respaldos, respaldos, respaldos, alta disponibilidad, etc... no está nada fácil.

Gracias por sus Respuestas

Bueno Gracias a todos por sus respuestas, les comparto un poco en lo que trabajo, soy desarrollador en una empresa de bureaus de crédito es decir compartimos información crediticia de las personas a través de WS o Aplicaciones Web personalizadas(dependiendo de las necesidades del cliente) especialmente para bancos, las tecnologías que uso para esas aplicaciones es lo que mencione al principio Spring, algunas veces Struts Hibernate, JSPs con ExtJS para la vista; los WS con CXF, Base de Datos Oracle o SQL Server depende del cliente. El Bureau se consulta a un SYBASE por medio de un sistema en COBOL.
Siento que algunos tienen la idea que no desarrollo pero de eso vivo, a eso me dedico..pido recomendaciones no porque no tenga idea de lo que hago sino porque soy humilde y admito que no lo se todo obviamente y me gustaría saber que opciones además de lo que conozco tengo. Pero Bueno el equipo de trabajo son varias personas algunas para proponer soluciones, otras mas para desarrollar, otros para planificar, etc ; y el banco es nuevo entonces se esta planeando las soluciones y luego proponer tecnologías. Agradezco a los que de verdad me ayudaron con su respuesta. @wishmaster77 Muy buen punto, para lo que necesito que para empezar es una solución que sea un WorkFlow que actúe como un analista de créditos pasando por todas las etapas respectivas como ingreso de solicitud, verificación telefónica, análisis, etc. me parece que los EJB sería una buena opción . @rodrigo salado anaya tenes toda la razón en que la solución se adecue a la tecnología. Me preocupa mucho el tema de la seguridad.
Solo para aclarar, lo que tengo de trabajar he sido desarrollador y será mi primera experiencia como Arquitecto de Software, entiendo que nadie nace aprendido y que todo viene por medio de la experiencia y el crecimiento profesional. Por eso quería saber la opinión de personas que conocen mas que yo y tienen mas experiencia que yo, no me parece una mala idea tratar de investigar que tecnologías usan en otros países como lo hacen y que opciones tengo.

Imagen de ezamudio

Investigar

Mencionaste la palabra clave: investigar. Que eso es muy distinto de pedir opiniones... Como mencioné antes, tienes que justificar tus decisiones desde un punto de vista tecnológico y además económico. Si dices Oracle por ejemplo, tienes que decir por qué. Arma una mesa de discusión con tu equipo, definan criterios a evaluar:

- Costo de las licencias
- Calidad y variedad del soporte (cuántas empresas ofrecen soporte y de qué nivel, tiempo de respuesta en emergencias, costo)
- Requerimientos de hardware
- Estabilidad del proveedor (difícil de medir obviamente pero pues cuánto tiempo lleva en el mercado, de qué tamaño son, qué pasa si mañana dejan de existir, etc)
- Estabilidad del software
- Confiabilidad del software
- Comunidad (hay foros de usuarios de este software? Qué tan fácil o difícil es contactar directamente a los autores, reportar defectos, etc)
- Alternativas: no nada más decir "ah pues Oracle" sino decir "ah pues Oracle en vez de SQLServer o PostgreSQL porque..."
- Curva de aprendizaje (muy importante para los distintos componentes que van a usar para desarrollar)
- Cómo está en el mercado; qué tan fácil es conseguir programadores que conozcan ya esa tecnología
- Capacitación; hay cursos cerca? pueden conseguir un instructor que les dé un curso intensivo en sitio?

En fin, son algunos de los criterios que se me ocurren ahorita, seguro se me están pasando varios otros.

Re: Scala?

Si, de hecho sé que casi todos los bancos siguen teniendo cosas en Cobol. Incluso dicen que todo programador de Cobol menor a los 40 años es el futuro de la banca en México xD.

En fin, hace un par de semanas vino un tipo de esos que son el caso de éxito de la universidad. Y pues el Tec de Mty lo invitó a dar una plática. El trabaja para el Bank of America y comentó que los desarrollos nuevos tratan de hacerlos en Scala, por todas las ventajas que este lenguaje tiene, en especial que pueden integrar sus cosas ya hechas en Java que tienen años y años sin perder esa compatibilidad (salvo con sistemas más viejitos, por la limitante de Java 5 y superior que requiere Scala).

Sé que no cambiarán sus mainframes de hoy para mañana, pero pues empiezan con ciertos sistemas nuevos. Incluso en dónde trabajo le damos servicio a un banco, y vieras que me sorprende el arsenal de tecnología que manejan, cómo 3 plataformas tipo SAP, varios desarrollos en .NET con VB, C# y tienen un proyecto que empiezan en F#... De éste lado tienen algunas aplicaciones desarrollándose con Grails, Scalatra, JSP, JSF.... En fin, según ellos esto les da la ventaja de qué cuando una tecnología "muere" pues les da la posibilidad de moverse sin perder la cabeza ni tooooodos sus sistemas.

Otra es que también en uno de los vídeos de ViveCódigo el invitado compartía que el trabajaba en el ramo de la banca y mencionó que ha hecho alguna cosa con Scala (desconozco que tan grande, pero lo ha hecho).

Imagen de ezamudio

Julio

Pero hacer script para algunos procesamientos de lotes en Scala no es lo mismo que hacer el core del banco en Scala.

Re: Julio

Eso no resta que sea una herramienta completamente capaz, y que muchos principios que requiere un banco son atacados con técnicas en las que Scala se enfoca. Este tipo que fue al Tec decía que usaban Scala para ciertos tasks en los módulos de crédito y que iban reemplazando las cosas Legacy hechas con Java 1.3 y demás.

Por otro lado, creo recordar que casi todos los bancos utilizan herramientas tipo Tibco con su stack.

Saludos

@fernando.ba3 Creo que te falta considerar la parte de infraestructura. Ya que dependiendo de eso podríamos darte mejores opciones. Por ejemplo mencionas tomcat, pero 1 sólo tomcat no aguantaría tanta carga, ¿Cuantos tomcat estás considerando y cómo lo balancerías? ¿Qué otros application servers estás considerando? ¿Ya tienen licencias para esos application servers?

En cuanto a tema de seguridad es algo muy delicado y donde seguramente deberás de seguir estándares, ¿Ya sabes cuáles son?
Te dejo unas ligas para que empieces a investigar con respecto a este tema: .

Para el workflow que comentas me parece que lo que deberías de investigar además de las tecnologías java es esto:

Imagen de 043h68

Nuevo sistema, nuevas tecnologías ?!

Es muy difícil que una institución bancaria trate de implementar nuevas tecnologías sin antes tener un buen análisis de fondo, mas sin embargo, si es lo que te están pidiendo te recomendaría que antes de hacer cualquier propuesta realizaras un análisis de la infraestructura que ahorita tienen en el banco y que preguntes que es lo que esperan obtener al pedirte nuevas tecnologías, con esto podrás plantear soluciones optimas al tener que implementar cambios sin tanto esfuerzo y saber si lo que vas a proponer se adapta a lo que ellos esperan que tu aplicación.

Ten cuidado al elegir tecnologías, no te quieras lucir con el último framework de moda si es que aún no lo dominas, en fin que difícil situación.

Suerte !

Imagen de jasistemas

Algunos de los clientes con

Algunos de los clientes con los que he trabajado:
- Scotiabank (antes Inverlat), cuyo centro de computo esta en Toluca, tenian como mainframe un iSeries (as/400) son equipo de IBM.
Los iSeries pueden ejecutar java, su base de datos es DB2 y facilmente puede manejar tablas con millones de registros. Recuerdo que nuestro proyecto era con Java (Visual Age) accediendo a los datos a algo como "webservices"
- Bancomer (tambien con iSeries)
- Profuturo GNP (creo que la empresa ya se vendio): Tiene un iSeries, usan tambien Websphere Application Server (java) (creo que ahora el software se llama rational), con DB2 como database, aplicaciones desarrolladas con JAva y PHP.
- Jafra Cosmetics: iSeries como mainframe.. programacion mayormente con RPG nativo, algo de .net y php para extraer datos.

Mayormente estas empresas cuentan con otras plataformas tecnologicas perifericas.
En lo particular estas empresas regularmente requieren robustez en sus datos, capacidad de procesar miles de transacciones por minuto, permitirles muchas veces implementar una replica de base de datos y tener un sistema Alta Disponibilidad (si se truena algo en el equipo o la database, se direcciona inmediatamenente al otro equipo)

Imagen de gabrie.chavarria

Procesamiento Batch

Para la mayoria de los procesos dentro de un banco puedes utilizar aplicaciones stand alone o spring batch por ejemplo si utilizan archivos, en el Banco donde realizamos esto se genero una especie de maquina de estados y tu aplicación front simplement muestra la información basada en esos estados para que no te metas en problemas de memoria en el was o alguna otra complicación que por temas de performance pueda causarte un problema y si piensas utilizar algun ESB, deberas tener cuidado en la implementación porque el proyecto que subsituimos estaba realizado con el JACKBE y JBPM, lo cual no es descabellado pero la implementación dejaba mucho que desear y los tiempos de respuesta eran malisimos.

Imagen de ezamudio

jackbe jajaj

ya con eso sé que banco es. Y qué mugre era esa aplicación...

Imagen de paranoid_android

Tecnologias

Las tecnologías que pusiste están bien.

Plantaría al revés la pregunta del JDK si vas a hacer una aplicación Web preguntaría al encargado de Hardware que versión de Web Server tienen y de ahí partiría para poner el JDK y la versión de JEE.

A mí en lo particular me agrada mas Sencha (Ext JS) que JSF, hay una librería que trabaja bien con jason y spring llamada jackson.

Si tienen Mainframe IBM conocer MQseries es básico.

A pesar de ser un banco nuevo debe haber estándares y políticas de arquitectura es mejor que los conozcas antes.

Los básicos de la arquitectura (no soy arquitecto) soporte de concurrencia, tolerancia a fallos, alta disponibilidad, escalabilidad, seguridad, bajo acoplamiento, alta cohesión, volumen de procesamiento.

Además de esto integración a los sistemas existentes, despliegue con bajo impacto, plan de retorno, ventana de instalación (hrs para afectar lo mínimo la operativa), criticidad.

Te recomiendo tambien pedir las reglas de seguridad que deben cumplirse, requerimientos de CNBV o Banxico es mejor que los pidas al encargado de seguridad informática.

Si existen huecos en algunos de estos puntos te recomiendo un curso de ITIL.

Otra recomendación es que los planteamientos de arquitectura consideren perfectamente bien las arquitecturas de hardware y sus limitaciones.

Espero te sirva

Imagen de jsmaster

core bancario

Así es, comparto la ideología de ezamudio, ya que si vas a iniciar algo de 0, es realmente desgastante aparte de que las reglas del negocio las debes definir ni mas ni menos tal como te las piden, y aparte siempre estar tratando de hacer algo seguro, y no dejar cabos sueltos, o líneas extrañas,
en mi experiencia teniamos planeado desarrollar el core bancario de una red de cajas de ahorro, y el tiempo estimado de desarrollo fue de año y medio, sin contar el tiempo de pruebas y training para salida a producción, después optamos por implementar Temenos T24, hecho en java, en donde nosotros podíamos desarrollar pero dentro de su framework, como SAP con ABAP.

Suerte y si ya firmaste, uchales!!! mis respetos maestro.

Mira como dicen, no hay que

Mira como dicen, no hay que inventar el hilo negro, yo sé y comprendo que esto representa un reto muy importante para cualquier desarrollador, pero yo te recomendario como supongo que ya lo han hecho en algun otro comentario que busques opciones sebre Core Bancario ya consolidados, donde solo hay que "Tunearlo" y adaptarlo a tus necesidades, yo trabajo en un banco en mi caso el core Bancario se encuentra sobre plataformas IBS iSeries, especificamente AS400 y el core se llama IBS , creo que puedes partir de ahí, puedes integrar mas sistemas a este core puesto que te puedes conectar a sus tablas y programas via JDBC, MQ entre otros. en fin como este hay mucha opciones y creo que es mucho mejos pues son opciones ya consolidadas y ya tienes el Soporte de una empresa que conoce el negocio.

Imagen de gabrie.chavarria

de acuerdo contigo

Por mas que intentamos sugerir algunas cosas distintas a las que tienen la verdad es que su area de retrograda que el imss utilizando los carnets esos de cientos de años. Pero bueno a veces se puede y otras tantas aguantarse a lo que te dan para hacer.