본문 바로가기

전체 글

(148)
EC2 CICD Automation - 3. Jenkins, CodeCommit, S3 세팅 젠킨스 내부 세팅을 하도록 하겠습니다. 먼저 예제 소스가 Spring Boot Maven이기 때문에 Jenkins에 Maven을 세팅하겠습니다. 자 이제는, Git Clone을 해올 때, 권한이 있어야 하기 때문에 Credentials를 만들어 주도록 하겠습니다. 먼저 IAM으로 가서 계정을 만들고 권한을 준 후 Git Credentials를 만들어서 Jenkins에 등록하겠습니다. 권한을 필수 레파지토리만 읽고 가져올 수 있도록 상세하게 구성하는 것이 가장 좋습니다. 위와 같이 유저를 생성한 후에 유저에 들어가서 보안 자격 증명 탭에서 CodeCommit Repository에 대한 Git Credentials를 만들 수 있습니다. 자 이제 만들어진 Git Credentials을 아래와 같이 젠킨스에 등..
EC2 CICD Automation - 2. Jenkins 설치 AWS Basic Infrastructure에서 이어서 배포 자동화를 만들어 진행해보도록 하겠습니다. 연습해 볼 구성도는 아래와 같습니다. Jenkins 서버를 생성하고 세팅해보도록 하겠습니다. EC2 Type이 최소 t3.small은 되어야 하기 때문에 t3.small / EBS 20GB로 설정하여주시고 server tag와 보안그룹을 위와 같이 설정하여 주도록 하겠습니다. 프라이빗 서버이기 때문에 도메인으로 접근을 해야합니다. Target Group을 8080으로 만들어서 Jenkins서버를 연결해 준 후 Route53 Record에 젠킨스 도메인을 ALB DNS로 CNAME Record를 생성해주겠습니다. 이제 서버에서 아래와 같은 쉘 스크립트를 수행하여서 젠킨스 설치 및 젠킨스 유저를 세팅하도록 ..
EC2 CICD Automation - 1. Intro EC2에 자동화 배포를 구성할 때, 사용하는 가장 기본적인 구조를 보도록 하겠습니다. 개발자는 CodeCommit Repository에 Git Push를 하면서 소스 업데이트를 하고, 젠킨스에서 이 해당 Repository를 보고 있다가 Job Run을 수행하면서 Git clone 후 Build를 합니다. (만약 Flask와 같이 Jar 빌드등이 필요하지 않은 경우 Build 부분은 생략됩니다.) 이후 Build된 Jar 파일과, CodeDeploy가 배포를 하기 위해 어떤 수행을 할 것인지 정의해주는 appspec.yaml, 그리고 appspec.yaml에서 정의되어 실제 서비스를 수행할 deploy.sh 파일을 작성하여 세 파일을 zip으로 묶어 S3에 Job Build Number대로 버킷 구조를 ..
AWS EC2 AutoScaling 사용하기 - 2. Hands On 앞의 글에서 말씀 드렸던 순서대로 진행해보도록 하겠습니다. 이전 게시글 Baisc Infrastructure대로 먼저 구성해 주시면 1단계인 AMI 세팅이 끝납니다. 이때 만든 AMI를 가지고 오토스케일링을 구성하여서 서비스를 띄워보도록 하겠습니다. 서비스 - EC2 - AutoScaling - 시작구성탭에서 시작구성 생성을 해보겠습니다. 기존에 EC2를 생성하거나 AMI를 통해 EC2를 생성하는 것과 굉장히 유사하므로, 똑같은 부분은 제외하고 달라지는 부분만 설명하겠습니다. #!/bin/bash sudo yum -y update sudo sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config sudo s..
AWS EC2 AutoScaling 사용하기 - 1. Intro 카테고리가 CICD인데, AutoScaling과 무슨 관계인가? 라는 생각이 드실 수 있습니다. 하지만 AWS에서 AutoScaling과 CICD는 뗄 수 없는 관계입니다. 그 과정을 먼저 EC2 부터 살펴보도록 하겠습니다. 먼저 EC2에서 AutoScaling을 구성하는 방법에 대해 알아봅시다. 1. 먼저 AMI를 생성해야 합니다. 만약 Spring Boot Jar파일을 실행할 서버라면 이 서비스를 수행하기 위해 JDK 1.8을 꼭 설치해야할 것이며 이 외에도 서비스 운영에 관해 필요한 각 라이브러리나 솔루션들을 서버에 설치해야합니다. 이렇게 서버에 Jar파일만 올려서 돌리면 서비스가 될 수 있도록 세팅이 끝난 서버의 현 시간을 이미지화 해서 해당 상태의 서버를 계속해서 찍어낼 수 있는 것이 AMI 입..
Spring Intro - 2. Spring Framework란? 먼저 스프링이란 무엇일까? 스프링 프레임워크의 정의는 다음과 같다. 자바(JAVA) 플랫폼을 위한 오픈소스(Open Source) 어플리케이션 프레임워크 자바 엔터프라이즈 개발을 편하게 해주는 오픈 소스 경량급 애플리케이션 프레임워크 자바 개발을 위한 프레임워크로 종속 객체를 생성해주고, 조립해주는 도구 POJO(Plain Old Java Object) BEAN CONTAINNER 즉, 자바 객체를 직접 관리하며, 각 객체의 생성과 소멸 = 라이프 사이클을 관리해준다. 이러한 특성 때문에 스프링 컨테이너에 내가 사용할 객체를 맡겨두고 필요할 때 받아온다. 그래서 제어반전(IoC) (컨트롤의 제어권이 사용자가 아니라 스프링에서 제어), 의존성주입(DI) (각 계층이나 서비스 간에 의존성이 존재할 경우 연결..
Spring Intro - 1. MVC 란? MVC는 기본적으로 Model View Controller의 약자로 프로그램 개발 시 세가지 역할로 구분하여 개발하는 방법론이다. 이렇게 하는 이유는 완벽한 분업화를 통해 해당 역할 개발자가 자신의 역할에만 집중하여 개발 하기 위함이다. 위의 그림을 보고 MVC가 분업화를 어떻게 이루는지 설명해 보도록 하겠다. 먼저, App개발시에는 Controller단은 Service까지가 개발의 끝이고, Web단으로 갔을 때, 위의 그림 처럼 각 기능을 수행할 Controller와 사용자의 요청에 따라 그것을 제어해 줄 Dispatcher Servlet 그리고 알맞은 컨트롤러로 전달해 줄 Handler Mapping, 다시 반환 할 때, 알맞은 JSP로 보내줄 View Resolver가 존재한다. 먼저, DB개발자와..
Spring DB - 7. Mybatis 연동 먼저 MyBatis는 무엇인가? MyBatis는 개발자가 지정한 SQL, 저장프로시저, 매핑을 지원하는 프레임워크이다. MyBatis는 JDBC로 처리하는 상당부분의 코드와 파라미터 설정 및 결과 매핑을 대신해준다. 또한 DB 레코드 원시타입과 Map 인터페이서, 자바 POJO를 설정해 매핑하기 위해서 XML과 Annotation을 사용할 수 있다. 이제, MyBaits를 구현하기 위해 필요한 것을 알아보자 XML 설정파일이 필요하다 위에서 언급했듯이, MyBatis의 전반적인 정보가 담긴 설정파일이 필요하다. Mapper.xml 파일 작성하기 인자값 매핑과 결과값 매핑 정보를 포함한 Sql문을 작성하는 곳이다. SqlSessionFactory 빌드를 통해 DAO를 구현한다. 여기서 보여지는 사진들은 대..