Cómo automaticé la implementación de aplicaciones Linux en la rodilla usando scripts Bash y Java

Una vez que haya escrito su aplicación de servidor, debe implementarla en algún lugar. En nuestra empresa, esto ahora se implementa utilizando un VPS en Linux, scripts bash y un pequeño programa Java. Este es un proceso evolutivo, y en lo que a mí respecta, resultó bastante bien.



En el artículo quiero describir la evolución de este enfoque, por qué sucedió, los pros y los contras del enfoque. Si tiene un problema similar, léalo, quizás le vengan a la mente pensamientos útiles.



KDPV - arquitectura del sistema, para una parte de la cual automatizamos la implementación:





Un poco de historia



Actualmente soy el jefe del departamento de desarrollo de la empresa donde trabajo. Tenemos un equipo pequeño pero equilibrado: tenemos back-end, desarrolladores front-end, control de calidad, diseñador, diseñador de diseño.



Nuestra empresa se dedica a actividades educativas en TI y escribimos software para nosotros mismos. Esto impone ciertas restricciones: no tenemos grandes presupuestos de desarrollo, hay requisitos vagos, porque no está completamente claro lo que la gente necesita.



Al mismo tiempo, hay ventajas: escribimos sobre lo que queremos y podemos establecer y acordar el cronograma de desarrollo nosotros mismos. Además, como no estamos cortando cien mil landing page o una tienda online, es interesante trabajar. Desarrollamos varios productos, recopilamos comentarios de los usuarios y arreglamos / agregamos funciones.



, , .





:





— . ( ). , -.



, . :



  • . , , ;
  • , . , — .
  • . java, node.js, python.


— , ( markdown ). .



, , . . .



Level 1



. SSH VPS, git, mvn build, npm i, java -jar .



, . — .



Level 2



- , . ..



, gihub SSH VPS. git pull, . , .



Level 3



. , .



, bash . :



  • git pull,
  • mvn package — fatjar ( Java)
  • pkill yourserverprocessname —
  • java -jar yourfatjar.jar


VPS, cd ~/git/repository_name, — ./deploy.sh



Level 4



, ?



, VPS. - . C — . , — . C , , , , .



, Java. . HttpServer. GET POST , token, — bash .



.



VPS . . — , .



— - , URL, bash , .



Level 5



.



github, webhook . , (push, etc) — github URL. — POST .



webhook push. URL, .



, git push, .



Level 6 (bonus)



, . . , node.js .



, .



, . UptimeRobot. :



  • — ( POST/GET , ..).


! , — , URL . , .



- . , UptimeRobot . , - , .



— . Spring Boot , UptimeRobot, . , — / , .



, , :



imagen



, .





— . bash .



, , . , .





— .



, push github ?



, push, ?



, . , . , .



CI/CD . , — production.



, , MVP. , , . , , — . , .



?



, . Java, Maven , , jar. , — .



bash , ( .jar mvn package) . - node.js — , .



github , (, , ).



CI/CD , Jenkins, Gitlab, Ansible. , .



, — . , - , . , — , .





, . , . , , , . , .



Deben tenerse en cuenta las limitaciones de tiempo y financieras. Considere los detalles de cada desarrollador. Ahora leo mucha literatura temática, de los últimos libros que leí en un mes: "Cómo pastar gatos", "Yo, nerds y geeks", "Programador programático", "Una novela sobre gestión de proyectos".



Este es un camino nuevo e interesante para mí. Lo reviso, describiendo mi progreso en mi canal de Telegram - Programador y negocio .



Estoy escribiendo sobre negocios desde el punto de vista de un desarrollador. Allí publico notas breves que no se ajustan al formato Habr.




All Articles