기업협업 1일차에도 모르는 것들이 많았지만 대략적인 기술스택에 대해서만 설명해주셨기때문에 그것에 대해만 찾아보면 됬었는데
오늘은 전반적으로 어떤 흐름으로 프로젝트가 진행되는지 말씀해 주셔서 모르는 것들이 정말 많았다. 간단하게 설명해주는 프로젝트 흐름을 위해 꼭 언급이 필요했던 것들에 대해서도 모르는 것이 부끄러워 검색을 통해 어떤 것들인지 대략적으로 파악하기 위해 노력했다. 우선은 백엔드 관련된 것들만 찾아 보았다.
CI/CD
CI는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)을 의미합니다. CI를 성공적으로 구현할 경우 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합되므로 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있습니다.
CD는 지속적인 서비스 제공(Continuous Delivery) 및/또는 지속적인 배포(Continuous Deployment)를 의미하며 이 두 용어는 상호 교환적으로 사용됩니다. 두 가지 의미 모두 파이프라인의 추가 단계에 대한 자동화를 뜻하지만 때로는 얼마나 많은 자동화가 이루어지고 있는지를 설명하기 위해 별도로 사용되기도 합니다.
https://www.redhat.com/ko/topics/devops/what-is-ci-cd
https://artist-developer.tistory.com/24
깃헙 액션
Github Actions이란 Github에서 제공하는 워크플로우(workflow)를 자동화하도록 도와주는 도구이다. 테스트, 빌드, 배포 등의 다양한 작업들을 자동화하여 처리한다.
https://velog.io/@ggong/Github-Action에-대한-소개와-사용법
React build artifact
React를 AWS S3에 배포하기 위해선 프로젝트를 빌드하고 해당 S3 빌드파일을 올리는 작업을 해주어야 한다. 하지만 AWS CodeBuild를 이용하면 Git 저장소의 코드가 바뀌면 자동으로 빌드되어 S3에 재배포할 수 있다
프로젝트 루트 경로에 buildspec.yml이라는 파일을 작성해줘야한다. buildspec.yml은 빌드 될 때 어떤 작업을 할지 설정하는 파일이다.
https://study-ihl.tistory.com/132
AWS codeBuild에서 build artifact와 source artifact
build artifact는 codeBuild가 build를 마친 후, 그 결과물을 저장한 파일. 나중에 auto scaling 할 때 쓰인다 source artifact는 codeBuild가 build를 하기 위해 소스코드를 가져온 파일
Cloudflare[미국 회사]의 CDN
클라우드플레어의 서비스는 전세계를 대상으로 서비스를 제공하는 곳이거나 DDoS 공격을 자주 받는 곳이라면 거의 필수로 사용하며, 그 사이트의 수는 수십만개가 넘는다. 따라서 주된 공격을 받기도 하며 이를 최전선에서 방어하고 있다
CDN Content Delivery Network | Content Distribution Network
CDN은 지리적 제약 없이 전 세계 사용자에게 빠르게 콘텐츠를 전송하는 기술이다.
프록시 서버에서 출반한 웹 캐시의 클라우드화다. 전세계 각지에 캐시 서버를 엄청 많이 설치한다. 그리고 한국에 있는 사용자가 접속하면 한국 캐시 서버가 정보를 보낸다. 프랑스에 있는 사용자가 접속하면 프랑스 캐시 서버에서 정보를 보낸다. 이런 식으로 CDN 자체가 알아서 사용자와 가장 가까운 캐시 서버에서 정보를 찾아 보내는 것이다.
CDN은 서버와 사용자 사이의 물리적인 거리를 줄여 콘텐츠 로딩에 소요되는 시간을 최소화한다. 먼저 캐시 서버를 설치한 다음, 원본 서버와 멀리 있는 사용자가 웹사이트에 접속할 때 캐시 서버가 콘텐츠를 전달한다.
EXPRESS(Node의 웹 프레임 워크)
HTTP 통신 요청(Request; GET, POST, DELETE 등)에 대한 핸들러를 만든다.
템플릿에 데이터를 넣어 응답(response)을 만들기 위해 view의 렌더링 엔진과 결합(integrate)한다.접속을 위한 포트나 응답 렌더링을 위한 템플릿 위치같은 공통 웹 어플리케이션 세팅을 한다.
핸들링 파이프라인(reqest handling pipeline) 중 필요한 곳에 추가적인 미들웨어 처리 요청을 추가한다.
gulp
gulp 는 node.js 기반의 task runner 입니다. 반복적인 귀찮은 작업들이나 프론트엔드 빌드에 필요한 작업들을 gulp 통해 쉽게 처리해줄 수 있습니다.
Gulp 는 스스로를 Stream 기반의 Build System 이라고 소개하고 있습니다.
요청 후 한번에 결과를 받는 것이 아니라 이벤트로 중간중간 전달받는 방식을 stream이라고 하는데, 이 stream 을 기반으로 하고 있기 때문에 가장 node.js 의 강점을 잘 살리고 있고 실제로 작업 속도도 비교적 더 빠른 것으로 알려져 있습니다.
gulp 의 task 는 pipe 로 연결되는데, 작업 대상 파일들이 pipe 를 따라 흘러가며(stream) 병렬로 동시에 여러 task를 수행하게 됩니다. gulp 라는 이름과 빨대가 꽂힌 컵모양의 심볼이 gulp 의 특징을 잘 반영하고 있다고 볼 수 있습니다.
Prisma
Prisma에 대해 간략히 소개하자면 more than ORM 을 지향하는 database toolkit 이라고 할 수 있습니다. 기존의 ORM이 class-interface에 기초한 object 상세서(specification)에서 출발했다면, Prisma는 하나의 소스(single source of truth)에서 출발하며 항상 plain JavaScript object를 반환한다는 점이 차이라고 할 수 있습니다. 또한 여러 migration 관련 기능(기존 database에서 prisma model을 뽑아오는 introspect, prisma model기반 database를 만들어주는 migrate)을 제공합니다.
'First step > web depeloper step1' 카테고리의 다른 글
graphQL (0) | 2022.01.08 |
---|---|
Docker-compose (0) | 2022.01.07 |
MQTT(Message Queueing Telemetry Transport) 란? (0) | 2021.12.29 |
[인턴준비]TDD(Test Driven Development) 방법론 - '테스트 주도 개발 (0) | 2021.12.29 |
[인턴준비]POS 시스템 (0) | 2021.12.29 |