전체 글

연새데학교 컴퓨터과학과 & 우아한테크코스 5기 백엔드 스타라이토 깃짱
· Linux
💋 인트로 안녕하세요. 우아한테크코스 5기 깃짱이라고 합니다. AWS에서 프리 티어로 EC2를 사용하기 시작했는데, 메모리가 모자라기 시작했습니다. 메모리를 늘리고 싶지만, 돈은 쓰기 싫다면 그 대안으로 Swap 메모리를 설정할 수 있습니다. 💋 Swap 메모리란? 리눅스에서 스왑 메모리는 주 메모리의 한계를 극복하기 위해 사용되는 보조 메모리입니다. 주 메모리(RAM)의 용량이 부족한 경우, 리눅스 운영체제는 현재 실행되지 않는 프로세스를 임시로 디스크 공간으로 쫓아내고, 빈 공간에 다른 프로세스를 적재해 실행하는 '스와핑' 방식을 사용합니다. 이렇게 해서 프로세스들이 요구하는 메모리 주소 공간의 크기가 실제 메모리 크기보다 큰 경우에도 프로세스들을 동시에 실행할 수 있습니다. 프로세스들이 쫓겨나는 디..
· Linux
✔️ MySQL 설치 sudo apt-get update sudo apt-get install mysql-server ✔️ 외부접속 설정 (3306 port 열기) sudo ufw allow mysql ✔️ MySQL 실행 sudo systemctl start mysql ✔️ MySQL 접속 sudo mysql -uroot 도움이 되었다면, 공감/댓글을 달아주면 깃짱에게 큰 힘이 됩니다!🌟 비밀댓글과 메일을 통해 오는 개인적인 질문은 받지 않고 있습니다. 꼭 공개댓글로 남겨주세요!
· Git
기존 Git Repository를 복사하여 다른 프로젝트로 활용하기 위해서는 git clone 의 mirror 옵션으로 모든 이력을 복사한다. 그 후에 새로운 repository에 push 하면 된다. git clone --mirror {old_repository_url} --mirror 옵션을 넣으면 커밋이력까지 함께 복제한다. 내부로 이동한다. cd {old_repository 이름}.git push할 레포지토리를 새로운 레포지토리로 변경한다. git remote set-url --push origin {new_repository_url} --mirror 옵션으로 통째로 push한다. git push --mirror 끗. 도움이 되었다면, 공감/댓글을 달아주면 깃짱에게 큰 힘이 됩니다!🌟 비밀댓글과 ..
· Git
💋 인트로 안녕하세요. 우아한테크코스 5기 깃짱이라고 합니다. 서브모듈이란, 레포지토리 안에 또다른 레포지토리를 디렉토리로 분리해 넣은 것이다. 왜 필요할까? 우리는 프로젝트에서 사용하게 될 각종 Secrets들을 절대로 깃허브의 public 레포지토리에 Push해서는 안된다. 지울 수 없고, 로봇이 지나가면서 다 내 정보를 털게 될 것이다. 서브모듈을 사용해서 통째로 중요한 설정 정보를 관리하자! 이 포스팅에서 내가 사용하는 메인 레포지토리는 backend-server이고, 메인 레포지토리의 설정 정보만을 담은 레포지토리는 backend-server-submodule 이다. 이 포스팅은 간단히 따라할 수 있도록 방법에 대해서만 포스팅할 것이다. 💋 Git Submodules 설정 방법 ✔️ 서브모듈 추..
💋 인트로 안녕하세요. 우아한테크코스 5기 깃짱이라고 합니다. 리팩터링 미션을 통해서, 메뉴, 주문, 테이블로 이루어져 있는 코드를 객체 지향 관점에서, 의존성의 관점에서, 그리고 그 연장선으로 모듈로 분리하게 되는 과정까지의 리팩터링 경험을 하게 되었습니다. 처음에는 단지 손가락 노동 뿐인 귀찮은 미션이라고 생각했는데, 미션 진행할 수록 객체지향에 대해서 제가 가지고 있던 일종의 강박 같은 것들을 깨뜨렸습니다. 단지 어떤 코드가 안좋다는, 근거 없이 느낌적인 느낌으로만 내리던 말도 안되는 판단을 버리고, 어떤 코드가 정말로 좋은 코드인지에 대해서 상황을 생각하며 더 입체적으로 판단을 내릴 수 있게 되었습니다. 💋 1단계: 테스트를 통한 코드 보호 1단계 Pull Request: https://githu..
안녕! 우아한테크코스 5기 [스탬프크러쉬]팀 깃짱이라고 합니다. 스탬프크러쉬 서비스의 소스 코드 바로가기 사장모드: stampcrush.site/admin 고객모드: stampcrush.site [우테코] 무중단 배포 자동화(1): Github Actions workflow 생성, Secrets 설정 앞선 포스팅에 계속 이어서, 무중단 배포 자동화 파이프라인을 만들어 보려고 한다. 💋 무중단 배포 계획 ✔️ 인프라 구조 무중단 배포를 위해서, 서버를 2대 둘 수도 있겠지만, 우리 팀은 돈을 못 벌고 있기 때문에 아래와 같은 구조를 사용하기로 했다. Nginx가 리버스 프록시 서버 역할로, 서버로 들어오는 모든 요청을 받는다. 매 배포마다 8080, 8081 포트에 톰캣 서버를 번갈아가면서 하나씩 띄우고,..
안녕! 우아한테크코스 5기 [스탬프크러쉬]팀 깃짱이라고 합니다. 스탬프크러쉬 서비스의 소스 코드 바로가기 사장모드: stampcrush.site/admin 고객모드: stampcrush.site 💋 스탬프크러쉬의 무중단 배포 자동화 방식 ✔️ 기존: Jenkins 사용한 CI/CD 스탬프크러쉬는 사실 이전의 포스팅에서 확인할 수 있듯, Jenkins를 사용해 무중단 배포 파이프라인을 구축했습니다. 다만, 이번에 Github Actions를 사용한 방식으로 변경하기로 다짐한 데는 아래와 같은 이유가 있었습니다. ✔️ Github Actions 도입 배경 현재 젠킨스가 실행되고 있는 서버는 우아한테크코스의 AWS 계정을 이용하고 있는 서버입니다. 그런데, 한 달 정도 이후에 우테코를 수료하게 되는데 그때부터..
💋 지난 3개월 간의 소감 우테코 레벨3부터 레벨4까지 약 3개월 간의 시간 동안 매일같이 10시부터 6시, 7명의 팀원들과 함께 생활했습니다. 이전에 프로젝트 경험이 좀 있는 크루도 있었지만, 나는 아직 개발을 시작한지 만 1년도 되지 않았고 따라서 매우 떨렸습니다. 모든 것이 새롭고 어려웠습니다. AWS 설정할 때 인바운드 규칙부터, ssh, scp 같은 Linux 명령어들, 무중단 배포라는 개념, submodule 관리하기, 우리 팀에서 기술 스택으로 선택한 JPA도, 부하 테스트, HikariCP Connection Pool Size 설정, 배포 시에 사용했던 Docker, Jenkins, nginx, 인프라 설계도 그리기 등등 나열하자면 끝도 없지만 그냥 다 처음이고 혼란 그 자체였습니다. 하지..
· DevOps/AWS
💋 IAM이란? ✔️ 개념 IAM(Identity and Access Management) 어떤 사용자가 리소스를 사용할 수 있는지 접근 레벨이나 권한을 관리하는 기능 ✔️ IAM의 필요성 회사에 아래와 같은 팀이 있다고 생각해 봅시다. 데이터 엔지니어팀 소프트웨어 엔지니어팀 데이터 분석팀 각각의 팀은 AWS 리소스 중 일부만 사용하게 됩니다. 데이터 엔지니어팀 → 데이터 읽어와서 전처리 로직 구현 소프트웨어 엔지니어팀 → 데이터베이스 구축, 스키마/테이블 생성, 데이터베이스 모니터링 데이터 분석팀 → 대시보드 구현, 데이터 기반 리포트 제작, 데이터 분석 모두가 AWS 리소스의 모든 권한을 가지는 것은 좋지 않습니다. 사람은 누구나 실수를 하기 때문에, 각자 자신의 업무에 따라서 AWS 리소스 중 오직..
· Linux
💋 EC2(Ubuntu)에 Docker 설치 Ubuntu EC2를 사용한다면, 아래 명령어를 간단히 복사 붙여넣기 해서 설치할 수 있다. ✔️ Docker의 apt Repository 세팅 통째로 한번에 붙여넣으면 빠르게 설치할 수 있다. # Add Docker's official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl gnupg sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a..