💋 오늘의 일기아침부터 백엔드 4인방 모여서 무중단배포를 하려고 했다. 제나가 진짜 공부를 많이 해와서 나름 수월하게 진행되고 있다. 제나는 인프라에 정말정말 관심이 많은데, 그래서 완전 날다람쥐처럼 젠킨스, Nginx, 이 서버 저 서버를 돌아다닌닼ㅋㅋ 인프라천재다. 서버는 블루, 그린이라고 이름을 붙였었는데 하디가 블루그린 방식에서의 의미와 그냥 서버 이름을 블루그린으로 짓는 건 헷갈리다고 해서, 서버에 좀 특별한 이름을 붙여줬다. GITCHAN, LEO 서버다. 이제 앞으로 무중단배포 할 때 마다 docker-compose GITCHAN down 이 뜰 건데, 기분이 묘하다. kill GITCHAN이라고 안 한 제나에 감사. 다들 취업 시즌이 되니 코테에 열심이다. 나는 알고리즘 이제까지 한문제도 ..
분류 전체보기
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcrznwe%2Fbtsx3JSKkfk%2FxdGg4xgQBj8ujisQSG9ICK%2Fimg.jpg)
안녕! 우아한테크코스 5기 [스탬프크러쉬]팀 깃짱이라고 합니다. 스탬프크러쉬 서비스의 소스 코드 바로가기 사장모드: stampcrush.site/admin 고객모드: stampcrush.site 💋 무중단 배포 도입 전 ✔️ 스탬프크러쉬의 인프라 상황 한 대의 클라우드 서버에서 운영 서버를 가지고 있으며, 외부의 한 대의 또다른 클라우드 서버를 배포 관련 서버로 사용중이다. 해당 서버에서는 젠킨스를 통해서 배포를 자동화하고 있다. ✔️ 배포 방식 현재 스탬프크러쉬는 jenkins 서버에서 아래의 4가지 단계로 배포를 자동화하고 있다. 우리가 트래킹하는 브랜치(main, develop)에 push가 되면, 젠킨스는 깃허브로부터 최신 코드를 가져온다. 최신 코드를 빌드해 .jar 파일을 만든다. .jar 파..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFTJ43%2FbtsxkB8C2qH%2FGdl1pjqGDKSgoZ9kMJyta1%2Fimg.jpg)
안녕! 우아한테크코스 5기 [스탬프크러쉬]팀 깃짱이라고 합니다. 스탬프크러쉬 서비스의 소스 코드 바로가기 사장모드: stampcrush.site/admin 고객모드: stampcrush.site 💋 인트로 안녕하세요, 우아한테크코스 5기 깃짱입니다. 이번 포스팅에서는 제가 진행하고 있는 프로젝트인, 스탬프크러쉬에서 자주 사용되는 쿼리들의 실행 계획을 확인하고, 개선하는 과정에 대해서 설명하고자 합니다. 💋 실행 계획 ✔️ 실행 계획 확인의 필요성 우리가 애플리케이션을 구성할 때 MySQL과 같은 DBMS를 사용하는 이유는, 데이터를 안전하게 저장, 관리하고, 빠르게 조회하기 위해서입니다. MySQL에는 쿼리를 쿼리를 최적으로 처리될 수 있도록 실행 계획을 수립하기 위해서, MySQL 엔진의 뇌라고 볼 수..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxeFs4%2FbtsAQeBgSn0%2FWe5YH1X3c8ZNsY4D9FME41%2Fimg.png)
💋 오늘 한 일 아침에 오자마자 글렌을 꼬드겨서 글렌도 우리 스탬프크러쉬 서비스의 카페사장으로 가입시켰다. 글렌카페 이용하는 사람들 모두 스탬프크러쉬 하세요~ 드디어 파일론 카페에서 우리 서비스를 쓰기 시작했다!!! 진짜로 이렇게 슬랙으로 적립 알림이 막 오기 시작하니 와쿠와쿠 우리팀 백엔드 오늘 드디어 마지막 남은 일들을 털기 위해 회의를 했다. 마지막으로 남은 일들을 이렇게 정리했다. 아래는 우리 팀 회의록 각자 생각하는 우선순위를 매겼고, 페이지네이션에 대해서 내가 제1 책임자가 되었다. 페이지네이션이라고는 이름을 쓰긴 했지만, 사실 지금 엄청 많은 테이블이 얽힌 조회여서 상당히 골치가 아플 것이라고 생각된다. 그치만 난 은근 골치 아픈 로직을 좋아하기 때문에 문제 없어! 무중단배포에 대해서도 공부..
💋 인트로 안녕하세요! 우아한테크코스 5기 깃짱입니다. 이번 포스팅에서는 mysqldump 명령어로 Docker 위에 띄운 MySQL 데이터베이스 백업하는 방법에 대해 알아보겠습니다. 스탬프크러쉬 팀원 제나가 열심히 옆에서 뚝딱뚝딱 했습니다. 💋 설정 방법 1. 백업 파일을 저장할 폴더를 생성 mkdir /db_backup 이름은 굳이 다른 것이어도 상관없음! 2. 생성된 백업 폴더의 권한을 수정 chmod 755 /db_backup 3. 백업을 수행할 스크립트 파일 생성 vi /db_backup/backup.sh 4. 생성된 스크립트 파일에 내용 입력 # /bin/bash FILE_NAME=backup_`date +"%Y%m%d%H%M%S"` BACKUP_DIR=/home/ubuntu/db_backup..
💋 오늘 할 일 프로젝트) 라잇이랑 스탬프크러쉬 사용 카페(파일론 성수) 방문하기 키패드 설치 사용법 알려주기 미션) JDBC 구현 2단계 리뷰 요청 보내기 프로젝트) 무중단 배포 방법 찾아보기 프로젝트) 페이지네이션 찾아보기 💋 오늘 공부한 내용 JDBC 구현 2단계 리뷰 요청을 드디어 보냈다. PreparedStatement를 실행할 Executor 어쩌고저쩌고 그무렵에서 필요한 콜백 패턴에 대해서 알아보는데, 진짜 뭔지 아리까리하다. 패턴 공부 시럭 무중단 배포에 대해서 알아보는데, 이번에도 후디 블로그가 아주 유익했다. 이쯤되면 나에게는 공식문섴ㅋㅋ 이 글도 상당히 유익했다. 팀원들이랑 같이 해보면 완전 재밌을듯 ㅎㅎㅎㅎ 💋 감정회고 백날천날 기술 고민해서 올린 글보다 스탬프크러쉬의 영업 관련 글..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcuAqiz%2Fbtsw68evmpx%2F1KclMxXDeK3fkXyRNtWi71%2Fimg.jpg)
안녕! 우아한테크코스 5기 [스탬프크러쉬]팀 깃짱이라고 합니다. 스탬프크러쉬 서비스의 소스 코드 바로가기 사장모드: stampcrush.site/admin 고객모드: stampcrush.site 💋 인트로 오늘 프론트엔드 크루 라잇과 함께 스탬프크러쉬 서비스를 사용하기로 한 파일론 성수 카페에 방문했다. 지난 번 방문해서 직접 우리 서비스에 대해 소개한 이후로 두 번째 방문이다. 오늘은 우리 서비스 사용 방법에 대해 알려주고, 이젠 진짜 사용하기 위해서 키패드 설치를 했다. 이 과정에 대해서 사진을 통해서 기록하고, 라잇과 서울숲을 돌면서 했던 이야기를 바탕으로 그냥 회고 식으로 나의 현재 생각을 정리해보려고 한다. 오늘 우리 최종 데모데이에 넣을 사진을 위해서 디카를 가져가서 사진을 찍었다. 블로그에도..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbN4dP%2FbtsAPIbwwUZ%2FLJQoHzuJpkHED6FDQwNnBK%2Fimg.png)
💋 Connection Pool이란? ✔️ 등장 배경 많은 애플리케이션에서 데이터베이스를 활용한다. 하지만, 데이터베이스에 연결하는 과정은 굉장히 비용이 많이 든다. 네트워크를 처리(TCP로 연결을 생성하고 종료)하고, 연결이 필요한 객체(SocketFactorv, Socket 등등)를 만들고 JVM GC에서 처리하는 과정은 굉장히 느리다. 데이터베이스와의 연결 비용을 줄이기 위해서 커넥션 풀 이라는 개념이 등장했다. ✔️ 개념 쉽게 말해서, 커넥션을 미리 만들어주고 빌려주는 것 미리 DB에 연결된 객체를 만들어놓고, 이것들을 Connection Pool이라고 하는 컨테이너에 넣어둔다. DB와 연결 요청이 들어올 때, 커넥션 풀에서 연결 객체를 꺼내서 주고, 다 사용하면 재사용할 수 있게 다시 커넥션 풀..
💋 try-with-resources ✔️ 개념 try-with-resources 구문은 Java 7부터 도입된 기능으로, 리소스를 효율적으로 사용하고 자동으로 닫아주는 역할을 합니다. 주로 입출력 스트림, 데이터베이스 연결, 네트워크 연결 등 자원을 사용하는 경우에 유용하게 활용됩니다. ✔️ 사용방법 try-with-resources 구문은 다음과 같은 형식으로 사용됩니다: try (리소스를 선언 및 초기화) { // 리소스를 사용하는 코드 작성 } catch (예외 타입 변수) { // 예외 처리 } 여기서 "리소스"는 AutoCloseable 인터페이스를 구현한 객체를 말합니다. AutoCloseable 인터페이스는 close() 메소드를 정의하고 있으며, 이 메소드를 호출하여 리소스를 닫을 수 있..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb6GLLj%2FbtswcGP7l0J%2FJU8a0MmgP4ypWqId1MVu3K%2Fimg.png)
💋 오늘 공부한 것 JDBC 구현 미션 1단계를 완료해서, 리뷰를 요청했다. 이건 제출한 Pull Request! 저번주까지 엄청 어려웠는데, 그냥 몇 밤 자고 일어났더니 지식이 좀 숙성되어서 오늘 구현할 때에 Reflection API를 아주 자유자재로 사용하게 되어서 좀 깜짝 놀랐다. 역시 공부하고 좀 된 지식이 최고야… 무튼 그래서 public T queryForObject(String sql, RowMapper rowMapper, Object... params) 이런 식으로 rowMapper를 직접 지정해줘야 하는 메서드 외에도 public T queryForObject(String sql, Class requiredType, Object... params) 와 같이, requiredType만 지..