WEB01, 02 Apache 2.4.X WAS01, 02 Tomcat 8.5.X DB01 MySQL 5.7.X (8.0.X 버전으로 하면 안됨) Tomcat 설치 https://tomcat.apache.org/download-80.cgi Apache Tomcat® - Apache Tomcat 8 Software Downloads Welcome to the Apache Tomcat® 8.x software download page. This page provides download links for obtaining the latest versions of Tomcat 8.x software, as well as links to the archives of older releases. Unsure whi..
프로젝트
Load Balancing(LB) 트래픽 분산 처리. 하나의 인터넷 서비스에 발생하는 트래픽이 많을 때 여러 대의 서버를 분산처리 하여 서버의 로드율 증가, 부하량, 속도저하 등을 고려하여 분산처리하는 방식 장점 고가의 서버로 확장하지 않고(Scale-up) 저렴한 비용으로 다수의 서버를 증설(Scale-out)하여 경제적으로 비용절감 1대의 서버에 장애가 발생해도 서비스 중단 없이 운영 가능 트래픽이 급증해도 서버 증설로 서비스 중단 없이 운영 가능 ALB(Application LoadBalancer) 7계층 LB Client IP와 서버 사이의 모든 트래픽은 LB와 통신한다. 보안그룹을 통한 보안이 가능하다. Client → LB의 접근 제한 가능 ALB의 IP 주소는 변동되기 때문에 Client에서..
WEB01, 02 Apache 2.4.X WAS01, 02 Tomcat 8.5.X DB01 MySQL 5.7.X 소스 설치 소스설치, 수동설치, 컴파일설치? Linux에서 소스를 직접 다운 받아 컴파일하여 설치하는 것 ↔ 패키지 설치(yum 또는 apt 설치) 패키지 설치는 간편하지만 불필요하게 설치되는 파일들이 있고 패키지 단위로 설치되어 관리가 어렵다. 소스 파일은 /usr/local/src에 보관하고 /usr/local/에 설치하는 것이 관례 소스 설치 순서 소스파일을 내려받고 ./configure로 설정하고 make로 컴파일하고 make install로 설치한다. configure: 소스파일에 대한 환경설정. 서버 환경에 맞춰 makefile을 생성 make: 컴파일 make install: 컴파..
EC2 구성 요구되는 구성 사항에 맞춰서 EC2를 설정한다. Bastion Host 보안그룹에서 먼저 하나 만들고, 내 IP에서 22번 포트로만 SSH 접속을 할 수 있게 인바운드 규칙을 설정했다. 아웃바운드는 아직 안 건드렸다. EC2를 생성하는데, public vpc로 설정해야 외부에서 접근이 가능하다. 외부 접근을 위해 퍼블릭 IP도 자동할당 해준다. 보안그룹은 아까 만든 걸로 설정했다. EC2에 접속 완료! EC2 - WEB01, WEB02, WAS01, WAS02, DB01 private subnet에 넣어주고 퍼블릭 IP는 비활성화 시킨다. 보안 그룹은 새로 생성한다. 보안그룹의 규칙은 소스로 bastion sg를 선택하여 bastion EC2를 통해서만 이 WEB01 EC2에 들어올 수 있도..
Well Architecture를 만들어봅시다 (๑•̀ㅂ•́)و✧ 필요한 요소 Internet gateway: VPC가 인터넷과 연결되기 위한 통로 NAT Gateway: private subnet의 인스턴스가 NAT Gateway를 통해서 외부 인터넷과 연결된다. 이 때 private 인스턴스의 사설 IP가 NAT Gateway의 EIP로 변경된다. 인터넷으로 나가는 통신만 가능하고 들어오는 통신은 불가하다. Public Subnet: Public 내에 있는 인스턴스는 외부에서 접근 가능하다. Private Subnet: Private 내에 있는 인스턴스는 외부에서 접근 불가능하다. Bastion Host: Private 인스턴스에 직접 접근할 수 없으므로 Bastion 호스트를 만들어 각 privat..
최종 발표까지 모두 끝났다. 하고 싶었던 것들 거의 다 적용했고 팀원이 열심히 해줘서 너무 좋았다. 프로젝트에 적용한 것 슬랙봇 기능 랜덤 인사 구현 학교 중식 식단 크롤링 및 식단 평가 학과 사무실 위치 안내(Levenshtein distance 사용) 제곱한 숫자 알려주기 Husky pre-commit으로 ESLint 강제 오토 픽스(ESLint-staged 적용) prepare-commit-msg로 브랜치 타입과 이슈번호 자동으로 커밋에 붙이고 커밋 규칙 주석으로 띄우기 테스트 단위 테스트 - Mocha Test 통합 테스트 - 또 다른 슬랙봇을 사용한 통합 테스트 구축 로그 winston 모듈 사용 GitHub 브랜치 별 규칙 적용 Issue template, PR template 적용 Actio..
배경 슬랙봇을 서버에서 항상 돌리고 싶었다. 원래는 도커파일 작성해서 올리려고 했는데 마감이 코앞이라 거기까진 못할 것 같고 이번엔 rsync 접속을 사용해보기로 했다. 그리고 rsync 접속은 안 해본 거기도 하니까. Naver Cloud, Git Action(Appleboy, butnett01 사용) Naver Cloud 서버 만들기 서버부터 생성해준다. 인증키가 없으면 '새로운 인증키 생성'으로 하면 된다. 포트 포워딩 설정을 해준다. 사용할 포트 번호를 입력하고 여기서 서버 접속용 공인 IP를 기록해둔다. 사용해야 하니까. 추가버튼 누르고 밑에 적용까지 눌러야 한다. 서버 관리 및 설정 변경에서 관리자 비밀번호 탭에 들어가서 아까 인증키를 넣으면 비밀번호가 나온다. 이 비밀번호도 기록해둔다. 로그..
esLint, Husky 설치 및 pre-commit 초기 구성은 아래 글 참고 2022.11.11 - [프로젝트/슬랙봇(이제 CI를 곁들인)] - Code Convention Check(ESLint, Husky) Code Convention Check(ESLint, Husky) Code Convention Check 장점 여러 사람이 함께 작업하는 코드에 대해 가독성을 높임 유지보수의 용이성 코드 스타일을 동일한 형태로 맞출 수 있음 우리 팀에서는 ESLint를 사용하고 Prettier는 자율적 대 su-mmer.tistory.com lint-staged 작업 아래의 명령어로 lint-staged를 설치한다. npm install --save-dev lint-staged package.json에서 아래..
배경 너무 하고 싶었던건데 드디어 했다. 정규표현식이라 복잡해보여서 미뤄두고 있었는데 생각보다 금방 했다. husky에서 pre-commit만 사용하긴 아까워서 다른 hook들에 대해 찾아보다가 prepare-commit-msg를 알게 되었다. 커밋할 때 템플릿을 띄워주면 작성할 때 참고할 수 있어 편한데, git config처럼 개인이 선택적으로 사용하는 방법 말고 좀 더 강제적인 방법이 필요했다. prepare-commit-msg 파일 생성은 했는데 정규표현식에 부딪혀서 미뤄두다가(과제에 다른 할 일들이 우선이라) 이번에 해결했다. 어렵지 않다! 결과 자동으로 브랜치명(#이슈번호)의 형태로 커밋을 생성해준다. 아래에 커밋 형식 작성 템플릿을 띄워준다. prepare-commit-msg 실행 시점 Gi..
issue 템플릿 만들었으니까 이제 PR 템플릿도 만들어보자. issue 템플릿은 밑에 링크에서 확인. 2022.11.19 - [프로젝트/슬랙봇(이제 CI를 곁들인)] - [GitHub] issue 템플릿 등록하기 [GitHub] issue 템플릿 등록하기 전에 PR 날릴 때 체크 표시가 자동으로 떴던게 기억이 나서 PR도 자동으로 템플릿을 작성시키려고 찾아보다가 이슈 템플릿까지 찾아보게 되었다. 이슈 템플릿이 더 작성하기 쉬워서 빠르게 만들 su-mmer.tistory.com PR 템플릿 생성하기 PR 템플릿은 root 디렉토리에 생성하거나 .github 디렉토리 내에 생성할 수 있다. issue 템플릿과는 다르게 직접 파일을 만들어야한다. 나는 .github 디렉토리 내에 pull_request_te..