본문 바로가기

분류 전체보기

(32)
jenkins - pipe line build job(3) 여러개의 서버의 소스를 배포하고 관리하는 과정에서 pipe line을 사용했습니다. aws cloud에 세팅 되어있는 서버들은 모두 다른 instance에 존재했습니다. jenkins의 하나의 job 안에서 서로 다른 서버에 소스를 배포하는 방법을 찾던 차에 pipe line을 알게되어 사용하게 되었습니다. pipe line은 여러개의 stage를 두어 pipe line의 script를 실행하는 것 뿐만이 아니라 jenkins에서 생성해둔 job(item)을 직접 실행시킬 수도 있었습니다. 이번 포스팅에서는 pipe line을 통해서 기존에 생성했던 job을 실행하는 예제입니다. job을 실행하기 전에 지난번 포스팅에서 다루었던 input을 통해 변수를 받고 다음 job에서 파라미터로 받아 실행해보도록 ..
jenkins - pipe line input, modal(2) 지난 포스팅에서는 jenkins pipeline에서 제공하는 hello world 예제를 통해 pipeline을 작성 기초를 실습해 보았습니다. 이번 시간에는 조금더 심화된 내용으로 접근에 보겠습니다. pipeline은 groovy 문법으로 된 Declarative 코드를 사용하여 작성할 수 있습니다. 지난번 포스팅에 이어서 작성한 pipeline을 수정하면서 진행하겠습니다. 아직 pipeline을 만들지 않았다면 지난 포스팅을 참고해주세요. jenkins - pipe line 사용하기 기본(1) 이번 포스팅에서 해볼 작업은 다음과 같습니다. 1. stage 추가 2. input 키워드로 modal 띄워서 문자열 입력받기 pipeline { agent any stages { stage('Hello') {..
jenkins - pipe line 사용하기 기본(1) 소스코드를 실제 서버에 배포를 하는 작업은 비즈니스 로직을 구현하는 일 만큼이나 복잡한 작업일 때가 있습니다. 여러가지 job 순차적으로 또는 조건에 따라 다른 작업을 수행할 수 도 있습니다. 저도 이전에 작성한 글에서와 같이 간단한 api 서버를 각각 배포하는 일만 하다가 최근 블록체인의 여러개 노드를 jenkins로 구성하고 업데이트하는 작업을 한 적이 있습니다. 각각의 job은 큰 작업이 아니었지만 원격의 6개 서버에 각각 순서에 맞게 docker swarm 세팅을 하고 그 작업이 끝난 후에 master 노드에서 각각의 서버에 docker를 up 하는 꽤나 번거로운 작업이었습니다. 결과적으로 코드는 단순했지만 이 또한 다른 작업들과 마찬가지로 "모르면 어렵지만 알면 쉬운 작업" 이었기에 또 한 번 ..
docker 데이터 활용 - volume 사용하기(2) 이번 포스팅에서는 지난번에 이어 docker container안에서 발생한 데이터를 host에 저장하는 또 다른 방식을 정리해볼까 합니다. volume volume을 사용하는 방식은 지난번의 bind mount 방식과 세 가지 차이점이 있습니다. 1. bind mount 방식은 host os에서 본인이 지정한 경로를 사용할 수 있는 반면에 volume 방식은 host os에서 /var/lib/docker/volumes 라는 지정된 경로에 저장됩니다. (정확하게는 bind mount는 docker에서 지정한 경로와 사용자가 지정하는 임의의 경로 둘다 저장됩니다. 단, docker가 제공하는 경로에는 폴더 이름이 아닌 hash 값이 폴더의 이름이 됩니다.) 2. bind mount 방식은 container를..
docker 데이터 활용 - bind mount(1) docker를 사용하여 많은 서버를 운영하곤합니다. docker를 사용하는 이유는 windows는 좀 아닐 수 있지만 host 환경에 크게 영향을 받지 않고 서버를 운영 배포할 수 있다는 장점 때문일 것입니다. 많은 기능을 사용해보지는 않았지만 docker를 사용하면서 현재까지 가장 큰 이슈는 docker container를 삭제하게 되면 docker 안에서 저장하고 있었던 data도 모두 손실되게 된다는 점입니다. database나 상태를 가지고 있는 서버들은 부득이하게 서버를 재구동하거나 삭제를 하여도 기존의 data를 보존해야합니다. container 영역의 data를 존하기 위해서는 세가지 방법이 존재합니다. 각각의 방법은 container의 데이터를 어디에 존재하는지 입니다. 1. bind mo..
EFS - efs(elastic file system) 간단하게 사용하기 서비스를 위한 서버를 구성할 때 storage가 필요한 경우가 많습니다. AWS에는 S3라는 훌륭한 storage 서비스가 있습니다. 사용하기 쉽고 가용성이 뛰어난 S3를 사용하기 위해서 검토를 한 결과 저희 시스템이랑 호환을 할 수 없는 상황이 발생하여 다른 storage를 결정하게 되었습니다. S3를 사용할 경우 물론 파일을 읽고 쓰는데 여려움은 없지만 현재 개발중인 서버에서 사용하는 SDK가 file system 기반의 모듈을 사용해야하기 때문에 SDK를 수정해야하는 문제가 발생했습니다. 파일의 경로로 접근하여 동작하는 모듈의 특성상 S3는 사용할 수 없다는 결론이 났고 결과적으로 파일 스토리지 서비스인 EFS를 사용하기로 하였습니다. EFS를 사용하는 경우 몇가지 장점이 있습니다. 1. aws의 ..
vpc - 개발, 운영환경 세팅 Bastion, NAT(3) 지난번 포스팅까지 사실상 기본 구성에서 어플리케이션이나 서비스를 운영하는데 필요한 기본적인 서버 구성은 마쳤습니다. 하지만 vpc는 폐쇄적인 네트워크이고 정작 개발자나 운영자도 서버에 접근을 할 수 없습니다. 그렇기 때문에 개발 또는 운영을 하는 사람들이 작업을 할 수 있게 통로를 만들어 주어야 합니다.(bastion server) 그리고 서버 자체에서도 ubuntu update나 git 소스에 접근을 하기 위해서는 인터넷과 연결되어야 하는 경우도 있습니다. 이 작업을 위한 세팅도 해주어야 합니다.(NAT) 또 한가지 필요한 것은 보안을 강화하기 위해서 ACL(Access Control List)를 추가로 설정해 줄 수 있습니다. 이번 포스팅에서는 10~13을 진행하겠습니다. 1. vpc 생성 2. pr..
vpc - 서버구성 EC2, RDS(2) 지난 포스팅에서는 vpc 구성에 필요한 vpc, routing table, subnet, internet gateway를 구성하였습니다. 이번 포스팅에서는 구성한 네트워크망에 실제 instance를 띄우고 연결을 하는 작업을 진행할 것입니다. 이번 포스팅에서는 7~9을 진행하겠습니다. 1. vpc 생성 2. private subnet 생성 3. public subnet 생성 4. private routing table 생성 5. pulic routing table 생성 6. internet gateway 생성 7. private ec2 생성(private subnet과 연결) 8. public ec2 생성(public subnet과 연결) 9. private database 생성 10. bastion s..