devops

· devops
1. 개요현재 회사에서는 CI/CD 환경이 구축되어 있지 않다. 애플리케이션 변경 사항이 빈번하게 발생하고 매번 로컬에서 빌드하고, 빌드된 jar 파일 config 등을 직접 서버에 SFTP로 개발/운영 다수의 서버에 배포를 하고 있다.(배포할 때마다 신경 쓸 것도 많다......)   이번 기회에 사수님께 말씀드리고 CI/CD 를 구축해 보기로 했다. 2. CI/CD 란?a. CI(Continuous Integration) - 지속적 통합요즘은 개발자가 소스코드를 Git으로 관리하고, GitHub나 Gitlab과 같은 원격 저장소를 통해 여러 개발자들과 소스코드를 공유하고 있다.  원격 저장소에 공용으로 사용하는 Repository를 생성하고, 각 개인은 브랜치를 생성하여 작업한다. 이..
· devops
1. 개요프로세스를 개발하고, 서버에 배포한 뒤 정상적으로 동작하는지 확인이 필요하다. 나는 매일 로컬환경에서 다수의 배포서버에 SSH로 접속해서 로그파일들을 확인해야 했다. 반복 작업을 줄이기 위해 자동화를 구축 하기로 했다.    2. 설계 및 사용 기술설계한 내용은 다음과 같다. 1. 프로그램이 다수의 서버에 ssh로 접속한다.2. 내가 지정해놓은 shell 명령어를 각각 실행한 다음, 결과를 가져온다.   3. 출근하면 자동으로 1, 2번 동작을 실행할 수 있게 스케줄러를 사용하고, 결과를 파일로 저장하고, 메일로 전송하도록 한다.  이해를 돕기 위해서 내가 처한 서버 환경에 대해서 설명하겠다.개발 서버는 로컬에서 직접 접속이 가능하다. 하지만 운영서버는 보안상의 이유로 로컬에서 직접 접속을 할 ..
· devops
SFTP를 정리하기에 앞서 FTP에 대해서 간략히 정리하겠다. FTP(File Transfer Protocol)는 말 그대로 파일을 전송할 때 사용하는 통신 규약이다. 즉, 계정을 제공하는 서버pc와 클라이언트pc(내pc)와 파일을 주고 받을 때 사용한 인터넷 통신 규약이다. FTP는 보안적인 문제로 잘사용되지 않는다. 1. SFTP(SSH File Transfep Protocol)란? 보안을 강화한 FTP라고 생각하면 된다. SFTP는 FTP와 달리 서버간의 데이터 전송시 암호화하기 때문에 보안상의 문제점을 방지했다. 즉, SSH를 적용한 파일 전송 프로토콜이다. 여기서 SSH란 원격 PC에 안전하게 엑세스하기 위한 유닉스 기반의 명령 인터페이스 및 프로토콜에 암호화 기능을 구현해 모든 데이터가 암호화..
· devops
리눅스 환경에서 서비스에 사용되는 여러 프로세스들을 모니터링 하기 위해 supervisor를 적용했다적용과정을 공유하겠다.1. supervisor 란?supervisor는 여러 프로세스를 모니터링-관리하며 데몬 형식으로 지속적으로 동작해야 하는 프로세스가 있을 경우 유용하게 사용할 수 있다데몬은 서버(시스템)이 살아있는 동안 항상 실행되어야 하는 백그라운드 프로세스이다. supervisor가 프로세스에 대해 지속적으로 모니터링 하고, 프로세스가 예기치 않게 좋료되어도 재구동하며 지속적으로 동작하도록 돕는 도구이다. 또한 여러 프로세스들을 통합해서 관리할 수 있다는 장점도 있다. 예를 들어, 사용자에게 지속적으로 제공해야 하는 여러개의 프로세스(서비스)가 있는데, 사람이 직접 프로세스가 구동되고 있는지 지..
· devops
리눅스 환경에서 백그라운드로 프로세스를 실행시키기 위해서는 주로 nohub과 &(앰퍼샌드 기호)를 사용한다. nohub과 & 사용법에 대해서 정리하겠다. 1. nohub / & nohub과 & 모두 백그라운드에서 실행하도록 할 때 사용한다. 이 둘의 차이점을 보자. nohub nonhub은 "no hang up" 줄임말로 특정 프로세스를 백그라운드로 실행시킨 후 현재 연결되어 있는 터미널 세션과 연결이 끊어져도 작업이 계속 실행되도록 보장한다. & &는 특정 프로세스를 백그라운드로 실행시킨 후 현재 연결되어 있는 터미널 세션과 연결이 끊어지면 프로세스도 함께 종료된다. 하지만 세션이 끊어져도 프로세스가 종료되지 않을 경우에는 옵션이 default로 적용되어 있기 때문이다. 옵션을 변경하게 되면 터미널과 ..
· devops
1. JAVA 17 설치 sudo apt install openjdk-17-jdk 위 sudo 명령어를 입력해서 JDK 17버전을 설치해보자. 2. 설치 확인 java -version 3. jar 확인 참고로 jar는 java 애플리케이션을 build하면 생성되고, Java 클래스 파일, 리소스 파일 및 메타데이터를 하나의 파일에 압축하여 저장한 파일형태이다. 배포할 때 사용한다. ls 명령어를 사용하여 jar 파일이 있는지 확인했다. 4. 실행 및 결과 java -jar "jar 파일명" 예를 들어 "hello_spring-0.0.1-SNAPSHOT.jar" 파일을 실행할 경우 아래의 명령어 형태로 입력하면 된다. hello_spring-0.0.1-SNAPSHOT.jar 또한 실제 배포를 할 경우에는 ..
· devops
1. cron이란? 특정 시간 조건에 따라 주기적으로 특정 로직을 실행하는 프로그램이다. 애플리케이션에서 특정 로직을 처리해도 되긴 하지만 cron을 사용하면 시스템 레벨에서 동작하기 때문에 안정적이다. 하지만 유지보수가 어렵기 때문에 여러 요인을 고려해서 사용해야 한다. crontab은 cron 설정 정보를 파일로 관리하는 것을 말한다. 2. cron 주기 cron 주기를 설정해 특정 시간마다 특정 로직을 수행할 수 있다. 함께 사용하는 기호 기호와 함께 주기를 설정하면 간편하게 설정할 수 있다. 예시 * * * * *: 매시간, 매분, 매일, 매월, 매요일에 실행 0 2-4 * * *: 매일 2시부터 4시 사이에 실행 */15 * * * *: 매 15분 마다 실행 0 0 * L * *: 매월 마지막 ..
· devops
1. 파일 생성과 vi 편집기 실행 hello_shell.sh를 vi편집기로 열어준다. (hello_shell.sh 파일이 없을 경우 새로 생성) vi hello_shell.sh 2. script 작성 및 저장 !/bin/bash : shell 을 사용하겠다는 의미 echo “hello world”: hello world를 출력 exit 0 입력 후 esc를 누른 뒤 :wq 입력하여 저장 후 종료 3. 실행 권한 확인 및 권한 부여 ls 명령어를 통해 해당 파일의 권한을 확인해보면 실행 권한이 없을 것이다. chmod 755 “hello_shell.sh” 입력하여 실행 권한 부여하면 파일 소유자에게 실행 권한을 부여해준다. 4. 실행 bash 명령어를 사용하여 실행 해주었다. 정상적으로 동작하는 것을 확..
· devops
명령어 정리 cd: 디렉터리 이동 cd [PATH]”: 이동하려는 디렉터리로 이동 cd ~ : 홈 디렉터리로 이동 cd / : 최상위 디렉터리로 이동 cd . : 현재 디렉터리 cd .. : 상위 디렉터리로 이동 cd - : 이전 경로로 이동 ls: 현재 위치의 파일 목록 조회 ls -l **:** 파일의 상세정보 ls -a : 숨김 파일 표시 ls -t : 파일들을 생성시간순(제일 최신 것부터)으로 표시 ls -rt **:** 파일들을 생성시간순(제일 오래된 것부터)으로 표시 ls -f : 파일 표시 시 마지막 유형에 나타내는 파일명을 끝에 표시('/' : 디렉터리, '*' : 실행파일, '@' : 링크 등) *ll : 숨긴 파일과 함께 파일 상세정보 조회(ls -alF) rm: 파일 삭제 rm [fi..
kmindev
'devops' 카테고리의 글 목록