1.키 생성

현재 실행중인 젠키스 사용자를 확인합니다. 특별하게 설정한 적이 없으면 jenkins 사용자로 사용중일 것이다.

ps aux | grep jenkins

현재 사용자를 jenkins로 전환한다.

sudo -u jenkins /bin/bash

전환이 완료되면 .ssh 디렉토리를 생성하고 해당 디렉토리로 이동한다.

mkdir /var/lib/jenkins/.ssh
cd /var/lib/jenkins/.ssh

이후 해당 디렉토리에 ssh 키를 생성한다.

ssh-keygen -t rsa -f /var/lib/jenkins/.ssh/github_ansible-in-action

생성이 되었다면 ls -al 명령어로 키가 잘 생성되었는지 확인한다.

2. Github 연동

Jenkins로 연동하고 싶은 Github의 Setting 페이지로 이동한다.

Add deploy key를 누르면 아래와 같은 화면이 나온다.

그리고 ec2로 이동하여 공개키를 받는다.

cat /var/lib/jenkins/.ssh/github_ansible-in-action.pub

이처럼 공개키를 받을 수 있다.

이제 비밀키를 받아야 한다.

3. Github

이제 젠킨스 화면에서 Credentials -> System -> Global credentials로 차례로 이동한다.

이후 Add Credentials를 누르면 아래와 같은 화면이 나오는데

cat /var/lib/jenkins/.ssh/github_ansible-in-action

명령어를 통해서 비밀키를 복사하고 OK를 누르면 된다.

 

CI (Continuous Integration)

  • CI는 지속적 통합으로 Build, Test를 실시 해주는 프로세스로 코드 품질의 관리를 위하여 이러한 통합 프로세스를 상시로 실시해 주는것을 CI라고 한다.

CD (Continuous Delivery or Continuous Deploy)

  • 소프트웨어를 신뢰 가능한 수준에서 짧은 주기로 배포하여 관리하는것을 의미한다.

수동으로 개발자가 직접 배포 하다보면 에러 발생의 소지가 있고 잘못 배포시 다시 배포하는 과정의 어려움이 있어 CI/CD를 하기위한 Travis CI, Circle CI, Jenkins 등이 있다. 이중 우린 Jenkins를 통하여 관리하는 것을 해본다.

 

1.EC2 생성

 

EC2를 이용하여 Jenkins를 설치 하려면 제일 먼저 EC2가 필요하다. https://aws.amazon.com/ko/ 사이트에 접속하여 가입 후 EC2를 생성한다.

Linux 서버에 설치를 기본으로 한다. 

이후에 EC2 보안 그룹에서 80번 포트가 열려 있는지 확인한다. 

 

2. Jenkins 설치

 

먼저 yum update 를 통해 최신화 시킨다.

sudo yum update

기본 패키지에는 Jenkins가 포함 되어있지 않다. 따라서 wget을 통해서 jenkins 저장소를 yum 저장소에 다운 받는다.

 

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo

그리고 Jenkins 저장소 키를 등록한다.

sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

이제 패키지가 저장소에 등록되어 yum install을 하면 된다.

sudo yum install jenkins

install이 끝나면 Jenkins를 실행 해본다.

sudo service jenkins start

위 사진처럼 동작되면 java8 버전을 다운받아야 한다. java8 버전을 다운 받고 난 뒤에 재 실행하면 아래와 같이 나오게 된다.

3. Nginx 설치

 

웹 서버인 Nginx도 설치해야한다.

sudo yum install nginx

설치 이후 

sudo vim /etc/nginx/nginx.conf

설정 파일을 열어서 내리면 아래 코드를 발견 할 수 있다. 그리고 location 부분에 해당 코드를 추가 한다.

proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;

4.Jenkins 설정

이후 해당 EC2의 퍼블릭 DNS(IPv4)를 복사하여 브라우저로 접속하면 아래ㅗ아 같은 화면이 나오게 된다.

패스워드는 cat으로 확인할 수 있다. 아래 코드를 작성하면 패스워드가 나오게 되는데 그 패스워드를 붙여넣기 하면 된다.

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

그러면 아래와 같은 화면을 볼 수 있다. 그리고 jenkins에서 추천하는 플러그 인을 설치한다.

로그인 할 계정도 가입한다.

그럼 끝이다.

'AWS' 카테고리의 다른 글

[AWS] jenkins와 github 연동  (0) 2020.02.20
[AWS] AWS(Amazon Web Service) Cloud Computing의 기초  (0) 2020.01.27
[AWS] 데이터 베이스(Database)  (0) 2020.01.27
[AWS] MySQL 과 AWS RDS 연결  (0) 2020.01.27

트리거(Trigger)란 테이블에 삽입, 수정, 삭제 등의 작업이 발생할 때에 자동으로 가동되는 개체이다.

트리거는 대체로 테이블에 부착되어 사용하게 되는 형태로 트리거가 부착된 해당 테이블에서 작업이 발생될 때, 자동으로 트리거가 실행되게 된다.

트리거를 가장 많이 사용하는 사례로는 테이블의 내용 복구인데 누군가가 테이블의 행을 실수로 삭제했다면, 내용을 복구하고 누가 지웠는지 추적하기 쉽지 않다 하지만 이러한 경우에 트리거를 사용해서 행이 삭제된 시간, 행의 내용, 삭제한 사용자의 정보가 기록되어있다면 이러한 문제를 쉽게 해결할 수 있다.

트리거의 종류

  1. AFTER 트리거 : 작업이 일어났을때 작업 후에 작동하는 트리거
  2. BEFORE 트리거: 작업이 일어났을때 작업 전에 작동하는 트리거

트리거의 기본 문법과 사용

trigger_order의 사용은 사용하려는 테이블에 해당 트리거 외에 다른 트리거가 존재할 경우 다른 트리거보다 PRECEDES(선행) 혹은 FOLLOWS(후행) 할지를 지정한다.

 

 

이 글은 코드프레소 DevOps Roasting 코스를 수강하면서 작성한 글입니다.

Cloud Computing이란

인터넷을 통해 연결된 원격 컴퓨터를 활용하는 기술로 개인용 컴퓨터보다 성능이 뛰어난 저장장치 등의 컴퓨터 자원을 빌려서 사용할 수 있도록 처리해주는 기술이다.

클라우드 컴퓨팅의 장점

  1. 클라우드를 통해 빠른 서비스를 구현할 수 있다. (서버를 구매하여 구축할 시에는 개발자까지 제공하기까지 시간이 오래 걸리므로)
  2. 물리적 서버나 데이터 센터등의 비용을 가변 비용으로 전환하여 비용을 절감할 수 있다. 즉, 초기 투자 비용이 발생하지 않으며, 사용한만큼 지불하면 된다.
  3. 클라우드를 통해 넓은 지역에 애플리케이션을 배포할 수 있다.

AWS의 주요 서비스

1. 컴퓨팅 서비스 : Amazon EC2(가상화 서버의 제공), Amazon Auto Scaling(서버를 추가/삭제 할 수 있게 하는 서비스), Amazon WorkSpaces(문서 및 데이터를 서버에 보관 관리할 수 있도록 해주는 서비스)

2.네트워킹 서비스 : Amazon Route 53(AWS에서 실행되는 다양한 인프라에 효과적으로 연결할 수 있게 하는 서비스), Amazon VPC(가상 사설 네트워크 인프라를 클라우드 내에 생성/구성하여 보안성/안정성이 높은 네트워스 서비스 제공), AWS Direct Connect(낮은 지연시간으로 데이터/정보를 공유할 수 있게 하는 서비스), Amazon ELB(사용량이 많은 경우 트래픽에 대한 부하 분산을 제공)

3.스토리지 서비스 : Amazon S3(범용적인 스토리지 서비스 제공), Amazon Glacier(사용 빈도가 높지 않은 데이터를 저비용으로 장기 보관하는 서비스), Amazon EBS(데이터의 입출력 속도가 빠른 서비스), AWS Snowball(대용량 데이터 업로드 서비스)

4.데이터베이스 서비스 : Amazon RDS(아마존에서 제공하는 관계형 데이터베이스 이용), Amazon DynamoDB(대용량의 데이터를 저장하고 이를 분석하여 연계 활용할 수 있도록 확장할 수 있는 서비스), Amazon ElastiCache(빠르고 신뢰성 있는 서비스 제공)

5.분석 플랫폼 : Amazon Kinesis(대량의 데이터를 저장 분류할 수 있는 서비스), Amazon Redshift(효율적인 데이터 분석 서비스)

6.애플리케이션 서비스 : Amazon CloudSearch(검색 서비스), Amazon SES(외부로 대량의 이메일 발송), Amazon Elastic Transcoder(동영상 인코딩 서비스)

 

 

이 글은 코드프레소 DevOps Roasting 코스를 수강하면서 작성한 글입니다.

'AWS' 카테고리의 다른 글

[AWS] jenkins와 github 연동  (0) 2020.02.20
[AWS] AWS EC2에 Jenkins 설치하기  (0) 2020.02.20
[AWS] 데이터 베이스(Database)  (0) 2020.01.27
[AWS] MySQL 과 AWS RDS 연결  (0) 2020.01.27

Database(DB) : 여러사람에 의해 공유되어 사용될 목적으로 통합하여 관리되는 데이터의 집합

RDBMS : 관계형 데이터베이스로 가장 많이 사용되고 있는 데이터베이스의 한 종류로 데이터 간에 연관 관계가 있는 데이터 항목들의 모음을 말한다. 관계형 데이터베이스는 열과 행으로 이루어진 테이블(Table)로 이루어져 있다. 대표적인 관계형 데이터베이스로는 Oracle, MySQL, MariaDB 등이 있다.

RDS : 클라우드에서 관계형 데이터베이스를 더욱 간편하게 설정, 운영 및 확장할 수 있는 서비스이다. 즉, 고정적인 자원의 할당이 아닌 가변적으로 조절할 수 있는 데이터 서비스이다.

Amazon RDS : 여러개의 DB 인스턴스 유형으로 제공되며 RDBMS의 종류인 Oracle, MySQL, MariaDB, PostgreSQL을 비롯하여Amazon aurora, Microsoft SQL Server까지원하는 DBMS를 선택할 수 있다.

AWS에서 데이터 베이스 서비스를 사용하는 두 가지 방법

  1. 직접 Amazon EC2에 데이터 베이스를 설치 : On-Premise에서 사용하던 데이터베이스를 그대로 사용하여 이질감 없이 사용할 수 있는 장점이 있다. 단, EC2에 설치 운용 전에 미리 마트너사를 통해 기존 라이선스를 사용할 수 있는지 여부를 확인해야 한다.
  2. AWS에서 직접 제공해주는 데이터 베이스 서비스를 이용 : 데이터베이스의 설치 및 운영/관리를 Amazon에서 직접 제공하므로 별도의 운영/관리가 필요하지 않는다는 장점이 있다.

Amazon RDS의 주요 특징

  1. 유연한 인스턴스 및 스토리지 확장 : 데이터 저장공간인 스토리지는 필요에 의해 유연하게 관리할 수 있으며 Provisioned IOPS(SSD)를 통해 빠른 데이터 처리나 대용량의 데이터 처리를 할 수 있다. 접속이 빈번하지 않은 워크로드의 경우 Magnetic을 사용하여 저렴한 비용으로 서비스 이용이 가능하다.
  2. 손쉽게 사용 가능한 백업 및 복원 기능 : RDS는 자동 백업 설정을 통해 손쉽게 백업이 가능하다. 데이터 베이스는 최대 35일까지 데이터를 보존할 수 있으며, 스냅샷을 통해 DB를 생성할 수도 있다.
  3. 가용 영역의 멀티를 통한 고가용성 확보 : 가용 영역은 상호 간 물리적으로 분리된 독립적인 인프라를 제공하는데 주요 장애 상황 발생 시 자동으로 데이터베이스 장애 극복 기능을 수행할 수 있도록 고가용성을 지원한다. 또한 리전 간 데이터 이전이 쉽게 가능하다.
  4. 암호화 옵션을 통한 보안성 강화 : 옵션을 통해 One-Click을 통해 데이터에 대한 암호화 기능을 제공
  5. Database Migration 서비스 : 동종 혹은 다른 DB 엔진으로부터 RDS로 에이터에 대한 Migration 지원

이 글은 코드프레소 DevOps Roasting 코스를 수강하면서 작성한 글입니다.

'AWS' 카테고리의 다른 글

[AWS] jenkins와 github 연동  (0) 2020.02.20
[AWS] AWS EC2에 Jenkins 설치하기  (0) 2020.02.20
[AWS] AWS(Amazon Web Service) Cloud Computing의 기초  (0) 2020.01.27
[AWS] MySQL 과 AWS RDS 연결  (0) 2020.01.27

오류 코드

Could not connect, server may not be running. Can’t connect to MySQL server on ‘localhost’ (10061)

해결 방법

  1. Ctrl + Alt + Delete 를 누른다.
  2. 작업 관리자 실행

3. 서비스 클릭

4. MySQL 아래와 같이 중지되어 있다면 마우스 오른쪽 키로 시작

5. 해결

'DB(DataBase) > MySQL' 카테고리의 다른 글

[DB] SQL Trigger  (0) 2020.01.27
  1. MySQL 설치 후 실행

2. MySQL Connections 클릭

3. AWS Console RDS 페이지에서 엔드포인트 확인후 Hostname에 작성하고 RDS 생성 시에 작성한 마스터 계정과 비밀번호를 Username과 password에 작성

4.생성된 연결 정보를 클릭해 DB인스턴스에 접속한다.

 

이 글은 코드프레소 DevOps Roasting 코스를 수강하면서 작성한 글입니다.

소프트웨어 품질을 보장하기 위한 방법중 코드 리뷰가 가장 효과적이다.

코드리뷰 : 코드를 실행하지 않고 사람이 검토하는 과정을 통하여 코드에 숨어있는 잠재적인 결함을 찾아내고 이를 개선하는 일련의 과정

코드 리뷰 스펙트럼

코드 리뷰는 얼마나 프로세스를 따르냐에 따라서 방법이 나누어져 있다.

https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F996056335A0E5D841F

가장 정형화된 기법부터 살펴보면

Code Inspection 

일정한 패턴을 가지고 분석을 하며 4가지 역할을 가지고 구성이 된다.

  1. 중재자 : 실제적인 매니저, 프로세스 정의와 산출물 정리, 테스트 환경을 확보하고 인원을 섭외한다. 인스펙션이 언제 끝날것인지 정의하는 역할
  2. 리더 : 어떤 흐름으로 인스펙션을 진행할지 방향 제시
  3. 디자이너와 코디 : 코드를 검증하고 잠재적인 결함 발견, 수정방안 제시
  4. 테스터 : 테스트를 수행하고 결함을 찾아내는 역할

그리고 6단계에 걸쳐 코드 리뷰를 진행하게 된다.

  1. 계획 : 기간, 종료 조건등 계획을 수립한다.
  2. 오버뷰 : 시스템에 대한 교육이 진행되고 팀원간의 역할이 할당된다.
  3. 준비 : 역할별로 필요한 문서 습득, 테스팅도구 구축
  4. 인스펙션 : 각자의 역할에 따라 인스펙션을 수행한다.
  5. 재작업 : 보고된 결함을 수정
  6. 후처리 : 잘 수정되었는지 확인
Team Review
  1. 발표자 : 코드를 만든 사람으로 코드에 대해 설명하고 팀원은 결함이나 개선안을 찾는다.
  2. 중재자 : 리뷰의 주제를 선정하고 리뷰를 진행한다.
Walkthrough

워크스루는 단체로 하는 코드리뷰 기법중 가장 비 정형적인 기법으로 발표자가 리뷰의 주제와 시간을 정해서 발표를 하고 의견이나 아이디어를 공유한다.

Over the Shoulder Review

주로 2~3명이 진행하는 코드 리뷰로 코드 작성자가 코드를 설명하고 다른 한 사람이 설명을 들으면서 아이디어를 제안하거나 결함을 발견하는 형식의 코드 리뷰이다.

Passaround

Git에 커밋 하기 전에 코드 내용을 리뷰하는 방법으로, 일일이 배포해서 리뷰를 받아야 하므로 자동화된 리뷰 도구를 사용하는것이 좋다.

코드리뷰를 사용해야 하는 시기?
  1. 코드 인스펙션 : 릴리즈
  2. 팀 리뷰 : 각 개발 유닛에서 사용, 팀 단위에서 활용하기 좋다.
  3. 워크 스루 : 비정기적으로 개최
  4. 피어리뷰 : 신입 개발자 교육, 지식공유
  5. 패스 어라운드 : 팀 자체가 코드리뷰의 필요성을 느낄때
효과적인 코드 리뷰를 막는 요인들

리뷰의 주요 목적이 결함의 발견과 개선임을 인지하고 아이디어나 결함에 대한 의견을 자유롭게 표출 할 수 있도록 해야하며 발표자의 감정을 상하지 않게 말 하는 것이 중요하다.

 

 

이 글은 코드프레소 DevOps Roasting 코스를 수강하면서 작성한 글입니다.

+ Recent posts