///
Search
Duplicate
🧩

1/29~2/3

브로셔 제작

아키텍쳐
기술적 의사결정
트러블 슈팅

유저 테스트 반영 내용

게시글에 이미지(최대 4장, 각 10MB 이내) 첨부
작성자 프로필 조회 기능
지도 캡처 후 자동 첨부 기능
게시글 이미지 첨부 시 리사이징 추가
나의 글 조회, 내가 좋아요 한 글 조회 페이지 추가
UT 설문자 선정

이번주 시도 사항

Jacoco 56% → 60% // 카카오, 네이버
각자 수동 배포, 무중단배포, (+https) 한 번 해보기
이미지 파일 리사이즈 - 해상도 조절
QueryDsl 적용
게시글 신고
N+1 문제 있는 것 같음
댓글 신고
httpOnly 설정으로 보안 강화 → 자바스크립트로 접근이 불가능해지면서 프론트단에서 쿠키 삭제가 불가능함. 적용 x
redis 데이터 삭제 문제
access token이 만료된 후 refresh token으로 자동 재발급하지 못하고 403에러가 뜬다.
우리 해킹당했어 ㅠㅠ
cd용량이 큰 이미지를 올렸을 때 서버가 느려지면서 버튼을 여러 번 누르면 글이 여러 개 등록됨 > 파일 리사이징으로 용량 큰 이미지를 쳐냄 (근본적인 문제를 쳐냈음 아주 나이스)
관리자 게시글 및 댓글 삭제 버튼 추가, 이미지 리사이징 :: 상율님
브로셔 내용 정리 :: 정욱님
readme 작성 :: 진환님
정적 파일 분리 작업 :: 재한님
발표 ppt, 대본 작성 :: 예진님
영상 제작 :: 진환님
부하 테스트 (nGrinder, Jmeter)
최종 발표 준비
(녹화)발표자: 김진환
발표자료: 이예진
(실시간) 발표 파트 분배
발표 내용
Jacoco 문서 - 커버리지: 60%
이미지

서버 생성에서 무중단배포까지

1.
AWS EC2 인스턴스 생성
2.
보안그룹 설정
인바운드 규칙: 22, 8080, 8081, 6379, 80, 443(https 적용하는 경우) 추가
위의 포트에 대해서 IPv4와 IPv6을 열어준다.
3.
탄력적 IP 주소 할당
4.
RDS와 연결
보안규칙 EC2와 연결
인바운드 규칙 3306 열기
(배포 서버인 경우)
5.
Route 53 도메인에 ip 추가
EC2 터미널 접속
(pem 키가 있는 곳으로 이동 후,
EC2 인스턴스 연결 > SSH 클라이언트 > 밑에 ssh~ 복사 후 터미널에 붙여 넣기)
6.
Swap area 설정
부족한 메모리를 커버하기 위해 가상 메모리 기법 적용
우리의 하드 디스크 일부를 swap area로 쓰면서 메모리 문제를 보완
sudo dd if=/dev/zero of=/swapfile bs=128M count=16 sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile sudo swapon -s sudo vi /etc/fstab # 파일의 끝에 /swapfile swap swap defaults 0 0 을 추가하고 저장합니다.
Bash
복사
7.
서버 시간 설정
sudo timedatectl set-timezone Asia/Seoul date # 변경 확인
Bash
복사
8.
Docker 설치
sudo apt update sudo apt upgrade curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io sudo docker -v # 버전 확인 sudo systemctl enable docker # 실행 sudo service docker start # 활성화 sudo service docker status # 상태 확인
Bash
복사
9.
Nginx 설치
sudo apt install nginx # 설치 sudo service nginx start # 시작 sudo service nginx status # 상태 확인 sudo service nginx restart # 재가동
Bash
복사
10.
Docker-compose 설치
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose docker-compose -v # 버전 확인
Bash
복사
11.
docker.sock 권한 부여 + docker 로그인
sudo chmod 666 /var/run/docker.sock
Bash
복사
12.
redis를 6379 포트로 도커 이미지로 실행 OR ec2에 redis 설치
비밀번호 설정 필요
docker run -v /path/on/host:/data -d --name my-redis -p 6379:6379 redis redis-server --appendonly yes --requirepass [password]
Bash
복사
sudo docker exec -it my-redis redis-cli # 비밀번호 입력 요청 auth [password]
Bash
복사
13.
수동 배포
# jar파일이 있는 곳에 Dockerfile 생성 FROM openjdk:17 COPY Sappun-0.0.1-SNAPSHOT.jar app.jar ENTRYPOINT ["java", "-jar", "app.jar"] # cd 명령어를 통해 도커 파일이 있는 곳으로 터미널 이동 docker build --no-cache -t [도커허브_아이디]/[이미지이름] . docker images docker push [도커허브_아이디]/[이미지이름] # 무중단 배포 적용 안하는 경우 ec2 서버 터미널에서 sudo docker pull [도커허브_아이디]/[이미지이름] # 환경변수 설정 .env 파일 저장 후 실행 sudo docker -i -t -d --env-file ./[환경변수파일].env -p 8080:8080 [도커허브_아이디]/[이미지이름]
JavaScript
복사
무중단 배포
14.
docker-compose.yml 작성
sudo vim docker-compose.yml
Bash
복사
내용
15.
deploy.sh 작성
sudo vim deploy.sh
Bash
복사
내용
sudo chmod 777 ./deploy.sh # 권한설정
Bash
복사
16.
/etc/nginx에 nginx.green.confnginx.blue.conf 파일을 생성
sudo vim nginx.green.conf
Bash
복사
내용
실행
./deploy.sh
Bash
복사
CI/CD를 적용한 경우
# 중간에 추가 - name: Deploy to prod if: contains(github.ref, 'develop') || contains(github.ref, 'main') uses: appleboy/ssh-action@master with: host: ${{ secrets.HOST_NAME }} username: ${{ secrets.USER_NAME }} key: ${{ secrets.AWS_PRIVATE_KEY }} port: ${{ secrets.AWS_PORT }} script: | docker pull ${{ secrets.DOCKER_USER }}/sappun:latest chmod 777 ./deploy.sh ./deploy.sh docker image prune -f
Bash
복사
17.
도메인을 구입하여 https를 적용하는 경우
기존 덮어쓰여진 etc/nginx/nginx.conf 파일 삭제
sudo rm nginx.conf
Bash
복사
새로 생성
sudo vim nginx.conf
Bash
복사
내용 복사 붙여넣기
nginx 재시작
sudo service nginx restart
Bash
복사
SSL 적용(certbot 설치)
sudo snap install certbot --classic sudo certbot --nginx
Bash
복사