DevOps

DevOps

Nextjs Springboot Nginx Docker-compose

서론 우리 프로젝트의 front는 Nextjs로 되어있고, back은 Springboot로 되어있다. 앞에 proxy server로 Nginx를 두었다. 각 어플리케이션마다 도커 이미지로 만들어 하나의 명령어로 관리하고 싶었다. 그 과정에서 참 많은 일들이 있었다. 순 개발시간은 50시간이 넘어갔고, 기간으로는 2.5주 정도 걸린 것 같다. 여태까지의 실패하고 좌절하고 다시 시작하고 여러 사람들의 도움으로 완성하는 과정을 설명하겠다. 본론 사실 처음에는 Nginx가 무엇인지, 왜 붙어야하는지 이해하지 못했는데 같은 회사 동료분께서 보안은 절대적으로 중요하며 내부포트(3000, 8080)를 개방하는 것이 아니라 외부포트(80) 하나로만 통신을 해야한다고 말씀해주셔서 도입하게 되었다. 일단 지금 상태로는 b..

DevOps

AWS S3 Bucket

사용하게 된 계기 처음에는 EC2 서버에 image 파일을 경로 지정해서 올리려고 했는데 경로 서버내에서 경로 지정이 잘 안되는 경우가 존재하였다. 알고보니 EC2 내에 Docker Container안에 SpringBoot를 띄워서 Docker container 안에가 Local이 되었다. 즉, container 안에 경로를 설정해 줘야하는데 그 부분을 잠시 접어두고 구글링 서치를 해본 결과 AWS S3 Bucket을 사용하는 경우가 대다수라고 하였다. 그래서 주변에 AWS에 다니는 개발자 친구에게 물어보았다. 역시..효율성도 효율성이지만 가격에 대한 메리트면 채택하기 충분하다고 생각한다. 위 개발자의 블로그는 여기이다. → youngdeveloper.tistory.com 공대생의 비망록 Never St..

DevOps

Github Action CI/CD

사용하게 된 계기 CICD에는 여러가지 툴들이 존재한다. Github Action CI/CD Jenkins Travis CI + AWS CodeDeploy AWS CodePipeline Jenkins를 사용해 본 결과 AWS EC2를 오로지 Jenkins를 위해 인스턴스를 하나 사용해야한다. 위와 같은 단점으로 인해 나머지 Github Action CI/CD, Travis CI + AWS CodeDeploy, AWS CodePipeline 툴중에 고민을 해보았다. Travis CI + AWS CodeDeploy Github와의 연동성과 설치가 필요없다는 장점이 있지만, Private Repo일 경우 유로이다. (1달에 69$이다.) 유료여서 배제하였다. AWS CodePipeline AWS 하나로 관리가..

DevOps

AWS CM, ELB, Nginx use HTTPS server building

사용하게 된 계기ACM비용이 무료이고 만료기간을 까먹어도 자동으로 갱신해주기 때문에 편리하다.기존에는 인스턴스를 하나하나 적용했어야 했던 SSL을 Route 53(도메인 네임을 설정한 곳)을 통해 하나의 인증서로 여러 인스턴스에서 사용이 가능하다.ELBACM의 단점으로 ELB를 무조건 사용해줘야한다. → 강제적임.요즘 Load balancing이라는 얘기를 많이 들어봤는데 이참에 배워보려고 하였다.Nginx서버의 보안성과 프로세스의 확장성을 위해 Proxy Server인 Nginx를 두었다.Nginx와 Apache를 고민했는데 내가 알기론 Apache는 서버 요청이 Thread와 1:1로 매칭되어 동시에 서버에 요청이 들어가면 Thread에 대한 생성 비용이 존재함. Nginx는 비동기적 방식으로 동시에..

DevOps

__AWS Route 53 DNS and EC2 linkage__

사용하게 된 계기todo사용 방법DNS SettingAWS Route 53 대시보드에 접속하여 도메인 등록 밑 “도메인”을 클릭한다.등록된 도메인이 없기에 도메인 등록을 클릭한다.도메인 네임 선택에 내가 하고 싶은 도메인을 입력하면 된다. 여기서 도메인이란 www.도메인네임.com이 된다.지금은 내가 devyeh를 사용하고 있기에 사용할 수 없음으로 표기가 된다.사용가능으로 뜨면 맨 밑에 계속을 눌러준다.도메인에 대한 정보(등록 연락처)를 작성해야한다.blank 처리 한 부분은 다 작성을 하였고, 마지막에 개인 정보 보호는 활성화를 선택해야한다.이제 Route 53 메인페이지에 오른쪽 탭 중 도메인 → 등록된 도메인 페이지에 가면 도메인 등록이 진행되고 있는 것을 볼 수 있다.도메인이 등록되는데에는 5~..

DevOps

AWS EC2 mariadb download

사용하게 된 계기기존 docker를 사용하여 springboot를 띄웠던 테스트가 있었는데 그 땐 docker로 띄우기 위한 목적성이 강하여 ec2 서버에 db를 붙이지 않고 해서 잘 되었다.근데 우리 프로젝트를 docker로 실행했는데 도커 실행이 되자마자 끝나는 것이였다.그래서 무엇이 문제인지 고민하다 docker를 실행한 log를 확인해보니 db에 접속이 안 되는 문제가 발생한 것이다.왜 이런 문제가 났는지 생각해보니 지금 존재하는 yml파일에 db 설정은 localhost로 되어 있어서 그런 것 같았다.알고보니 그런 문제가 아니고 EC2 서버에 db가 존재하지 않아서 문제였다,,,ec2 서버에서도 db가 존재하고 거기서 연다고 하면 EC2 서버 자체가 localhost가 되니 상관이 없었다,,,그..

DevOps

SpringBoot __& Docker & DockerHub & EC2 & GitHub & JenkinsCI/CD__

Architecture대략적인 과정Local에서 Github에 푸시한다.Github의 webhook을 이용하여 jenkins에 전송한다.jenkins에서 Github의 코드를 받고 빌드, 테스트를 진행한다.받은 코드 중 Dockerfile을 이용하여 이미지를 빌드하고 Docker hub에 푸시한다.또한 받은 코드 중 deploy.sh 파일을 jenkins에 설정한 운영용 EC2 서버로 전송하고 실행을 한다.deploy.sh 파일에는 가동중인 docker를 중지 및 삭제를 하고 Docker hub에 올려져 있는 docker image를 받아옵니다.받아온 이미지를 docker run 시켜 SpringBoot 프로젝트를 띄운다.SpringBoot CodeSampleController : 간단한 테스트를 하기 ..

DevOps

Jenkins CI/CD with Github

Jenkins 설치 및 시작brew install jenkins → brew를 이용하여 jenkins를 설치한다.설치한 후 밑 명령어로 젠킨스를 컨트롤 한다.brew services start jenkins → 젠킨스 시작brew services stop jenkins → 젠킨스 종료brew services restart jenkins → 젠킨스 재시작brew remove jenkins → 젠킨스 삭제brew services start jenkins를 입력하여 젠킨스를 시작하고 http://localhost:8080(기본포트 : 8080)에 접속하면 젠킨스 포털에 접속된 걸 확인할 수 있다.밑 사진이 설명해주는 것과 같이 이 파일에 패스워드가 있다고 한다.cat /Users/taeyun/.jenkins/..

DevOps

Docker AWS EC2 deploy

대략적인 과정dockerfile을 build해서 docker image 파일을 생성한다.docker image 파일을 docker hub에 push한다.aws ec2 서버에 docker hub에 존재하는 docker image 파일을 pull 받아온다.docker run 명령어를 통해 docker image 파일을 실행한다.실행 과정DockerFile이라는 명으로 root directory에 추가한다.FROM amazoncorretto:17 ARG JAR_FILE=build/libs/*.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-jar","/app.jar"]intellij에 terminal에서 ./gradlew build -x test를 입력해준다.-x te..

DevOps

AWS EC2

실행 과정회원가입을 진행한다.로그인 후 본인의 지역(region)을 확인한다.만약 서울이 아닐 경우 수정해주면 된다.검색창에 ec2를 검색하여 ec2 페이지에 접속한다.ec2에 들어왔다면 인스턴스 시작 버튼을 클릭한다.인스턴스 설정이름 및 태그EC2를 구분해줄 수 있는 이름이나 태그를 설정 할 수 있다.AMI(Amazon Machine Image)EC2 인스턴스를 시작하는데 필요한 정보를 이미지로 만들어 둔 것으로 프리 티어중에 고르면 된다. 나는 Amazon Linux 2 AMI(HVM)으로 선택했다.인스턴스 유형위와 마찬가지로 프리 티어에서 선택하면 되는데 프리 티어가 1개 밖에 없다.키 페어(로그인)EC2 인스턴스로 접근하기 위해서는 pem 키가 필요하다. 따라서 새로운 키 페어를 생성해야한다.pp..

devtaeyun
'DevOps' 카테고리의 글 목록