DevOps & Server
SonarQube
2020.12.08 : DevOps & ServerPull Request decoration 기능? SonarQube v7.2부터는 유료(Developer Edition)로 바뀜. 7.1 까진 무료 버전에서도 플러그인 형태로 제공. https://docs.sonarqube.org/display/PLUG/GitHub+Plugin https://github.com/SonarSource/sonar-github PR 시 changes만 가져와서 sonarqube 돌리게끔 설정 가능. 설치 및 초기 설정 일단 SonarQube 7.1 버전 설치. 최신 버전은 docker로도 설치할 수 있는데 7.1은 그냥 zip으로 받아서 압축 풀어 설치하면 됨. conf 설정 등 전체적인 권장사항은 이 것 참조 https://docs.sonarqube.org/7.1/Insta..
NGINX
2020.12.04 : DevOps & ServerReverse Proxy 실 운영 환경에서는 80, 443 빼고는 inbound를 막아두는 경우가 많아서 iptables 써서 80 -> xxxx로 포워딩하거나, nginx써서 80 -> xxxx로 포워딩한다. 후자를 더 많이 사용하는데 그 이유는 nginx를 쓰면 설정이 좀 귀찮기는 하지만, 한 장비에 여러 인스턴스를 띄우고 이들을 domain(혹은 location)으로 구분하므로 모두 80으로 받을 수 있다. jenkins나 sonarqube 등 설정 파일에서 home location (e.g., /jenkins)을 설정할 수 있도록 지원하는 것이 이 것 때문. 어차피 server IP가 변경될 상황을 대비해서 도메인을 쓰긴 써야하니 그럴 바에 nginx로 리버스 프록시하는게 낫다. IP로 hook ..
[tomcat] 톰캣, jvm 실행 인자
2020.03.05 : DevOps & Servertomcat이 하는 일? = Servlet Container Java Servlet 이란 자바에는 요청을 받아서 처리하는 일을 담당하는, servlet이라는 actor가 있음. 요청을 받으면 서블릿은 자기가 알아서 실행되는게 아니라 서블릿을 실행하는 주체가 따로 있다. 이게 바로 서블릿 컨테이너. 즉, 요청을 받으면 서블릿을 해당 요청을 파라미터로 실행해주는게 서블릿 컨테이너이고, tomcat이 바로 서블릿 컨테이너다. tomcat log tomcat 로그에 찍히는 log는 여러 스레드가 동시에 기록하기 때문에, 한 세션의 요청이 연속해서 바로 뒤이은 로그에 찍혀있지 않을 수 있다. 그래서 로그를 추적하기 위해 exec-* 번호를 같이 기록해 주는데, 이는 스레드 번호를 의미한다. 로그는 이 exec-*..
젠킨스 Jenkins
2019.05.09 : DevOps & ServerCI/CD (Continuous Integration/Deploy) 젠킨스 설치 공식 홈페이지에서 권장하는 방법은 `` .war`` 파일 하나 받아서 java 커맨드로 띄우는 방식. 이게 제일 간단 yum 등을 이용해 아예 패키지로 설치해도 되긴 함 ```bash #!/bin/sh nohup java -DJENKINS_HOME=/home1/user/jenkins/jenkins_home -jar /home1/user/apps/jenkins/jenkins.war --httpPort=8080 > /home1/user/logs/kenins/nohub.out & ``` JENKINS_HOME은 옵션으로 줄 수도 있고, 환경변수로 줄 수도 있음. 기본 경로는 `` ~/.jenkins`` jenkins-x.x.x 폴..
[Gradle] build, jar 배포, IntelliJ 설정
2019.04.10 : DevOps & Servergradlew가 무엇인가? Gradle Wrapper is a script that invokes a declared version of Gradle, downloading it beforehand if necessary. Gradle이 maven보다 좋나? https://docs.gradle.org/current/userguide/build_cache.html gradle은 빌드 정보 등을 캐싱 해두고 사용하기 때문에 성능 이점이 있음 gradle daemon을 띄워 두고, 여기서 Task를 수행하기 때문에 프로세스 띄우는 시간을 절약할 수 있음 별도 설정 없는 경우 daemon은 2시간 동안 작업이 없으면 죽음 jar 배포 및 실행 Running `` gradle build`` from termina..
vagrant
2018.11.02 : DevOps & ServerVM 이미지를 통째로 배포하는 것 대비 vagrant를 사용해 배포하면 다음과 같은 이점이 있음. 1. 환경에 따라 달라지는 설정이 있는 경우, 예를 들어 배포한 가상머신들이 특정 서버 IP를 바라보도록 설정해야 하는 경우 vagrant를 사용하면 도움이 될 수 있음. 2. port forwarding 같은 가상머신 외부에서 설정해주어야 하는 부분까지 미리 설정해서 배포할 수 있음. VM 이미지만 배포하게 되면 유저가 받아서 설치할 때 직접 포트포워딩 설정하고 방화벽 열어주어야 함. 실력 없는 엔지니어라면 이런거 하다가 짜증낼 수 있기 때문에, vagrant를 이용하면 이런 상황을 예방할 수 있음. 3. VM 설치 이후 앤서블같은 provisioning shell script가 실행되도록 구성할 수 있어..
ansible 앤서블 설명
2018.10.30 : DevOps & Serverhttps://blog.naver.com/alice_k106/221333208746 경험에 비추어 생각해보면, 서버 여러대 일괄작업 및 관리, 이런거 다 쉘스크립트로 하면 되는거 아닌가? 싶은 생각이 들지만쉘스크립트 짜서 돌릴 수 있는, 또 그렇게 하려고 하는 사람이 그렇게 많지 않다는 점과쉘스크립트 자체가 그런 목적으로 있는게 아니라는 점, 그리고 여러 다른 서버에 대한 호환 등을 고려해야 한다는 점 등 실제로 적용하다보면 단점들을 마주치기는 한다. 그래서 앤서블을 사용하는 것. windows에 앤서블을 설치하기 위해서는 cygwin을 설치해야 함.
docker
2018.10.27 : DevOps & Serverdockerdocker container란?Simply put, a container is simply another process on your machine that has been isolated from all other processes on the host machine. That isolation leverages kernel namespaces and cgroups, features that have been in Linux for a long time. Docker has worked to make these capabilities approachable and easy to use. docker 장점?1. Host와 독립된 환경에 설치되므로 Host가 지저분해지지 않고 충돌도 방지할 수..
웹서버 / WAS 정리
2017.06.17 : DevOps & Server웹서버와 WAS의 차이? Web Server 정적 컨텐츠를 반환하는 기능 서버 사이드 프로세싱이 필요 없는 단순 html, css, js같은 것. 예) Apache, IIS, nginx Web Container 서버 사이드 프로세싱이 필요한 동적 페이지를 resolve하는 기능 예를 들면 JSP같은 것. 이렇게 만든 페이지를 반환해주지는 못함. WAS WAS = Web Server + Web Container 즉, 동적 컨텐츠 resolve & 반환하는 기능 예) Tomcat WAS에 웹서버가 내장되어 있는데, 별도로 웹서버를 따로 두는 이유? 아래와 같은 이유로 보통 앞단에 apache나 nginx같은 Web Server를 별도로 두고 reverse proxy를 통해 Tomcat으로 forwarding..
AWS, Google Cloud, Azure
2017.04.22 : DevOps & Serverhttps://www.youtube.com/watch?v=orIXr5xd6P0&index=44&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm AWS educate로 등록하면 연간 100달러 지원받을 수 있음.screen으로 작업걸어 놓고 쉘에서 빠져나올 수 있음. 이 때 ;를 이용해 작업이 끝나면 종료되도록 하여 과금을 막으면 좋다.Spot Instances를 사용하면 저렴한 가격으로 사용할 수 있으나, Instance가 작업 도중 사라질 수 있다. 그러나 Instance가 사라져도 Storage는 남겨두어 이를 Snapshot -> AMI로 만들고 그 AMI를 이용해 다시 Spot Instance를 만드는 방식으로 작업 결과를 저장해 가며 사용할 수 있다. 주로 ML train..