두번째 강의의 첫번째 섹션에선
첫번째 과제물에 대한 피드백이 있었습니다.
장점과 단점에 대한 예시와 이유를 함께 강의주제 였습니다.
(해당 게시글은 실제 강의 내용을 그대로 옮겨적은것은 아니며, 주관적인 이해 및 판단으로 요약되어진 글입니다.)
commit Convetion
idSelector는 지양
로직의 분리 (응집도를 높이자)
react state의 남용
불필요하면 익명함수 지양
주석은 필요한 경우만 사용
두번째 섹션에서는 서버에 대한 강의가 있었습니다.
서버란, 무언가를 제공해주는 컴퓨터 입니다.
웹 환경에 있어 서버란, 프로그램 실행환경에서 네트워크를 통해 서버에 접근요청이 오면, 정해진 요청에 따라 특정 리소르를 응답합니다.
때문에 서버는 웹 환경에 있어, 없으면 안되는 필수적인 하드웨어적인 환경입니다.
이러한 서버를 관리하는 크게 두가지로 나뉘어져 왔습니다.
온 프레미스란, 서버를 서비스하는 회사에서 직접 관리하는 환경을 의미합니다.
장점
단점
서버는 물리적인 실체이기때문에, 실제 제반 공간, 시설, 인력 등이 필요로 하며, 꾸준히 관리해야 하는 필요성이 있습니다. 즉, 초기 설치 비용이 비싸며, 유지보수 비용을 지속적으로 필요로 합니다.
설치된 서버의 수용량은 이후 변경이 어렵기 때문에, 순간적으로 많은 수용이 필요로 할 경우 정상적인 작동의 기대가 어려울 수 있습니다.
최근의 데이터센터 화재사고, 또는 기타 천재지변과 같이 예기치 못한 사건에 대해서는 취약할 수 있습니다.
클라우드 컴퓨팅이란, 직접적으로 서버를 구비하지않고, 클라우드 서비스를 이용하여 서버를 작동시키는 환경을 의미합니다.
장점
단점
클라우드 컴퓨팅은 IaaS , Paas , SaaS 와 같은 3계층의 형태로 나뉘어질 수 있습니다.
IaaS(Infrastructure as a Service)
PaaS(Platform as a Service)
SasS(Software as a Service)
AWS는 클라우드 컴퓨팅 서비스를 제공하는 프로바이더로, 현재 전세계에서 가장 많이 사용되어지는 클라우드 컴퓨팅 서비스입니다.
AWS는 단순히 컴퓨팅 자원의 제공 뿐만 아니라, 이를 편리하게 관리 할 수 있도록 도와주는 여러 서비스를 제공하며 높은 안정성, 확장성, 보안성 등을 가지고 있습니다.
이번 섹션에서 다루어본 주제는 S3 였습니다.
S3는 Simple Storage Service의 약자로서, 단순한 형태의 파일 보관소라고 생각 할 수 있습니다.
특정 파일, 이미지 등을 저장하고 인터넷상으로 접근할수있게 하는 서비스로도 사용될 수 있지만,
CRA를 통하며 빌드된 파일, index.html은 정적인 파일이며, 렌더링이 CSR로 작동한다는 특징이 있어, 이를 이용하여 S3 서비스를 이용해서 웹 페이지를 배포할 수 있습니다.
S3를 이용하는 방법
가장 기본적인 사용법 입니다.
AWS의 S3로 접근하여 버킷을 생성합니다.
생성된 버킷의 속성 TAB 에서 하단의 웹 사이트 호스팅 기능을 활성화 합니다.
권한 탭의 버킷정책 설정에서 사용하고자 하는 정책을 설정합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "<name>",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::<버킷 네임>/*"
}
]
}
위와 같은 설정 이후, 객체 탭으로 이동하여, 자신이 오나성한 CRA의 build를 통해 정적인 html파일을 만들고, build 파일안의 파일들을 모두 객체 폴더에 업로드 합니다.
속성 탭의 권한 웹 사이트 호스팅에 생성되어 잇는 url을 통해 완성한 CRA의 페이지로 이동이 가능하게 됩니다.
섹션 3에서는 CI/CD에 대해 다루어보았습니다.
CI/CD란 Continuous Integration(CI)와 Continuous Delivery/Deployment(CD)를 통합해서 부르는 용어입니다.
CI/CD를 이용한다는것은 개발과정에서 필요한 빌드,테스트,배포 등의 과정을 자동화 한다는것입니다.
CI의 관심사는 코드를 지속적으로 통합해 나가는것을 의미합니다. 중요한것은 에러가 발생하지 않는지 체크해주는것. 머지 후에도 제대로 관리가 되어질 수 있을까 라는 것. 유효한 코드인지 검사해주는 것. 이러한 것들에 대한 체크를 CI는 자동화 해준 다는 것입니다.
CD의 관심사는 CI과정을 통과한 코드를, 실제 사용자가 사용하는 Production 환경에 배포하는것이며, CD는 이러한 과정을 자동화하는것입니다.
즉, CI/CD 과정이란, CI에서 코드에 문제가 없는지를 검사하며, CD에서 CI를 통과한 코드를 배포하는 과정을 자동화 한다는것을 의미합니다.
1. 클라우드 플랫폼의 종류
CI/CD의 사용은 파이프라인을 구축하여 사용합니다. 파이프라인을 구축하고, 사용하기 위해서는 CI/CD 플랫폼을 사용하게되는데, 이러한 CI/CD플랫폼 또 한 2가지 분류로 나뉘게 됩니다.
크게 설치형과 클라우드 형으로 나뉘게 되는데,
설치형으로는 Jekins가 대표적이며, 클라우드형으로는 GitHub Actions 등이 있습니다.
설치형의 장점으로는 온-프로미스 서버와 유사하게, 실행환경의 통제가 가능하다는 장점이 있습니다.
클라우드형의 장점으로는 별도의 컴퓨팅 자원이 필요 없이, 서비스 제공자가 모두 운영해준다는 장점이 있습니다.
하지만 플랫폼에서 제공해주는 수준까지만 사용 가능하기 때문에, 세부적인 조정이 불가능 하다는 단점이 있습니다.
2. 사용 이유
현재의 개발자는 상대적으로 많은 업무를 맡고 있습니다. 개발자는 기본적인 개발 이외에도, 고객의 피드백에 대해서 빨리, 그리고 자주 개선해야 하는 등의 추가적인 업무 등, 맡고 있는 업무가 하드웨어적인 개발환경보다 많이 있습니다.
이러한 환경에서 개발자는 CI/CD를 통해 코드의 유효성 검사와 배포를 자동화를 맡김으로서, CI/CD를 위한 시간 할애를 하지않고, 본연의 개발업무에 집중할 수 있게 해줍니다, 또한 해당 과정에서 오류가 발생할시 자동적으로 개발자에게 이를 알려주는 기능 또한 가지고 있기때문에 CI/CD는 개발환경을 효율적으로 나아갈 수 있도록 도와줍니다.
1.GitHub Action을 사용하는 장점
2.사용방법
name: <NAME>
on:
push:
branches:
- <Branch>
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- run: npm ci
- run: npm run test
- run: npm run build
- name: deploy to s3
uses: jakejarvis/s3-sync-action@master
with:
args: --delete
env:
AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: 'ap-northeast-2'
SOURCE_DIR: 'build'
name은 워크플로우 이름입니다.
on은 언제 이벤트가 실행될것인지를 의미합니다.
push설정을 하여, push가 될경우 자동화 될 수 있도록 설정되었습니다.
branches는 어느 브랜치에 push될 경우 자동화 할것인지를 의미합니다. 기본값은 master로 되어 잇으며, 이경우에는 따로 설정할 필요가 엇습니다.
workflow_dispatch 는 GitHub Action Page에서도 수동으로 CI/CD를 할 수있게 하는 옵션입니다.
jobs는 실행할 작업 목록을 의미합니다. jobs는 여러개의 스텝을 가질 수 있습니다.
deploy 라고 명시되어 있는 부분은 jobs에서 실행할 첫번째 작업의 name입니다. 이것은 수동적으로 변경할수있습니다.
runs-on 은 git actions에서 제공하는 클라우드의 어느 환경에서 실행할것인지를 의미합니다.
steps는 어떠한 작업을 할것인지를 의미합니다
uses는 타인이 만들어둔 지정된 워크플로우를 사용한다는것을 의미합니다.
npm ci는 npm install과 유사하지만, cleanInstall을 의미하며, 완벽히 정확한 버전의 패키지만을 설치한다는 차이점이 있습니다.
이후 빌드까지의 작업이 이어집니다.
name은 하단에 이어질 step 파이프라인 작업의이름입니다.
uses를 통하여 jakejarvis/s3-sync-action@master의 파이프라인 설정을 가져와 사용하였음을 의미합니다.
with은 옵션으로서, aws는 파일이 추가되면 기존의 파일을 제거하는 설정을 가지고 잇습니다. 이것을 args: --delete로 표시합니다.
env는 step에서 사용할 환경설정입니다.
시크릿 정보들은 repo - setting - secret - action secrets 에서 환경값을 설정할수있습니다. 위 문서에서는 버킷,키 아이디, 액세스 키 등을 등록해야 합니다.
AWS_REGION 는 사용할 aws 클라우드 서비스의 위치를 의미합니다.
SOURCE_DIR 는 배포된 파일에서 어떤 dir 내부의 파일을 사용할것인지를 의미합니다.
AWS_SECRET_ACCESS_KEY와 같은 경우, AWS 설정을 터미널 환경에서도 사용하기 위해 발급받아야 하는 토큰값입니다.
이번 강의에서는 저번 과제에 대한 피드백과 서버,CI/CD에 대해 공부하였습니다.
총 3시간내외 강의였는데, 정말 밀도있는 수업이라고 느꼈습니다.
몇번 따라해보기는 했지만, 두루뭉실하게 남아있던 클라우드 서비스, CI/CD에 대해서 이번 기회로 어느정도 확실한 개념과 사용법을 익힐 수 있었습니다.
사실 프론트엔드는 웹 VIEW 쪽만 잘 하면 되지 않을까라는 생각도 하긴 했엇는데, 강사님이 마지막에 말씀해주신 프론트엔드 개발자는 단순히 개발뿐만 아니라, 여러분야에 대해 협업을 해야하고, 또한 알고 있어야 하는게 필수불가결 하다는걸 강조하셨습니다.
특히, CI/CD와 같은경우, 프로덕트 배포에서 문제가 생겻을때 빠르게 문제가 발생했는지 확인하고 대응하는 능력이 있어야 하기 때문에, 중요도가 높다고 강조하신게 제 좁은 시야를 넓혀주신 느낌이였습니다.