📍 61일 차 1.18. 화. 실시간 강의
이번 주가 마지막 정규 수업이고 다음 주부터 교육과정이 종료되는 주까지는 2차 프로젝트 기간으로 진행된다. 벌써 교육을 들은 지도 4개월이 되어간다니... 시간이 참 빠른 것 같다. 엘리스 교육을 들으며 프런트부터 백엔드까지 네트워크 통신에 대해 대략적인 큰 틀과 프론트엔드에서 사용하는 언어, 프레임워크 등 다양한 내용들을 배웠다. 참으로 도움이 많이 되었다. 교육이 끝날 때까지 열심히 공부해서 현업에서 함께 일하고 싶은 개발자가 되고 싶다. 그럼 SSR
, CSR
, style-components
, 배포에 대해서 배워보자. 덧붙여 오늘은 json-server
, github-action
, CI-CD
, webhook
, nginx
에 대해서도 배웠다.
❏ 이론 강의
development
단계에서 API
를 RESTful
하게 통신할 수 있는 간단한 라이브러리가 있는데 바로 json-server
다. 사용법도 어렵지 않은데, npx json-server --watch <실행 할 파일 명>
을 터미널에 치면 곧바로 사용할 수 있다. 나는 db.json
파일을 생성하고 다음과 같이 작성했다. 이렇게 개발단계에서 임시적으로 API
를 만들어 통신하는 서버를 mock server
라 부르는데, 프로젝트 진행 중에 백엔드에서 API
가 만들어지지 않았을 때 사용하면 괜찮을 것 같다. db.json
에서 여러개의 데이터를 collection
이라 부르고, 단일 데이터를 element
라고 부른다.
{
"topics":[
{"id":1, "title":"html", "body":"html is ..."},
{"id":2, "title":"css", "body":"css is ..."}
]
}
// POST
const URL = 'http://localhost:3000/topics';
const data = {id: 4, title: 'gimotti', body: '오마에와 모 신데이루..'};
response = await fetch(URL, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(data)
});
result = await response.json
지금은 POST
만 구현했지만 이처럼 fetch
혹은 axios
를 이용해 데이터를 CRUD
할 수 있다.
❏ 실습 강의
CI/CD
:commit
한번만으로 자동으로discord
에 알림 설정하고 배포까지 한다.- 해당 아이콘은 배포용으로 적합하지 않다는 뜻, 개발용으로만 사용하기
development
: 디버깅 및 개발 환경production
: 실제 배포 환경node.js
로development
로 배포한다면 오류가 어디에서 났는지 알 수 있기 때문에 보안에 취약하다front
에서development
로 배포하면production
보다 느리다.development
에서는warning
이 잘 보인다. 반면에,production
에서는warning
같은것이 뜨지 않는다.production
은 가볍다. 개발 모드와 배포 모드의 속도 차이는 약 4배(2017년 기준)npm run build
를 작성하면production
모드로build
해주는데,build
폴더에서 파일을 클릭하면 코드가 한줄로 작성되어 코드를 읽기 힘들다.scripts
객체에서 명령어를 사용하려면npm run
을 작성하자serve -s build
: 배포용 버전 확인
// 배포용에서만 확인 할 수 있는 코드
if(process.env.NODE_ENV === "production"){
console.log("현재 Production 빌드로 돌아가고 있어요!")
}
<script src=""></script>
로js
파일을 불러오면window
인 전역객체에 생성되므로 나중에 생성한 파일이 이전에 생성한 함수의 값을 변경할 수도 있다. 이를 보완하기 위해webpack
으로 번들링하여 보관한다.cloud
,web hosting
: 개인적으로 서버를 빌려 운영하면 가격이 비쌈(VM
), 반면에,heroku
와 같이PasS
를 이용하여 서버의 일부 자원을 이용하는 작업은 소스코드를 올려주어 페이지를 띄우는 작업이라 비용이 들지 않는다.AWS
: 점유율이 높고, 매우 안정적이며 다양한 기능을 제공하지만 가격이 비싸다...oracle
,google cloud
: 가입시 프리티어 무료 제공프론트만 쌩으로 돌린다.
:Github Page
,Netlify
,Vercel
Node.js
도 돌린다: 시간제한이 괜찮다면Heroku
Nginx
같은 웹 서버도 돌리고, 다양한 작업을 한다:2G
,1 Core
로 충분Docker
도 돌리고 싶다: 최대8G
,4 Core
..- 실물서버의 단점: 데이터 복구 시 절차가 까다롭다.
NGINX
(web server): http를 통해 웹 브라우저에서 요청하는 HTML 문서나 오브젝트를 전송해주는 서비스 프로그램을 말한다.SSL
,forward proxy
,reverse froxy
,cache
,로드 밸런서
,정적이고 가벼운 데이터 제공
시 사용하기에 적당하다.proxy-server
: 클라이언트와 서버 중간에서 무언가를 해주는 서버reverse-proxy
: 클라이언트가 요청하면Nginx
가 대신해서 응답해준다. 서버의 보안을 높일 수 있다Docker
: 한 서버에서 서로 같은 두 개의 서비스를 만들려면? 서버를 컨테이너로 나눈다면 개발환경을 구축하다가 충돌이 발생하거나, 의존성이 꼬일 필요가 없다.(가상화)CI(Continuous Integration) / CD(Continuous Deployment)
: 통합, 배포를 자동으로 해주는 과정, 단순하게 커밋만 하면 배포까지 한 번에 된다. 원래는GitLab
의 기능이었으나github
에서github-action
를 만들어 제공했다. 현업에은Jenkins
를 주로 사용한다.Jenkins
는 별도의 서버를 요구한다.Travis CI
: 상황에 따라 유료인 점을 감안하기web-hook
: 특정 이벤트가 발생했을 때 타 서비스나 응용프로그램으로 알림을 보내는 기능(다른 팀원이 커밋하면 해당 코드를 바로 볼 수 있음)web-hook
디스코드로 설정하기: 서버 생성 → 이 서버 설정 → 웹 훅 → URL 복사 →github settings/webhook
→payloadURL
에 붙여 넣고 끝에/github
붙여주기yml
: 들여 쓰기를 신경 쓰는 문법git action
빌드 중 중간에 에러가 발생하면 그 이후의 작업은 수행하지 않는다.
'Frontend > 엘리스 SW 엔지니어 트랙' 카테고리의 다른 글
[ 엘리스 SW 엔지니어 트랙 ] 63일차(CI/CD, github actions, heroku, firebase) (0) | 2022.01.20 |
---|---|
[ 엘리스 SW 엔지니어 트랙 ] 62일차 (0) | 2022.01.19 |
[ 엘리스 SW 엔지니어 트랙 ] 60일차 (0) | 2022.01.17 |
[ 엘리스 SW 엔지니어 트랙 ] 59일차 (0) | 2022.01.14 |
[ 엘리스 SW 엔지니어 트랙 ] 58일차 (0) | 2022.01.13 |
댓글