목록발밤발밤프로젝트 (6)
멍두의 개발새발

WHY서비스를 운영하기 시작하면서 CICD가 절실해졌다 매번 직접 build하고 upload하고 기존 실행하던 process 종료하고 다시 실행시키고 제대로 실행됐는지 확인하고 오류나면 다시 코드짜고 다시 업로드하고 너무 생산성이 떨어진다고 판단하여 github action을 이용해 자동 배포를 해보기로 했다💡 Goal 💡 : 개발 서버를 github action을 이용하여 자동배포 환경을 갖추어 불필요한 반복적인 행동을 줄이자WHAT1. 코드를 git의 develop branch에 push, pull request2. GitAction : bootjar build ▷ docker image build ▷ docker hub에 image push3. EC2 : docker hub에서 image pu..

WHY운영 전에는 데이터베이스를 분리하지 않고 내 맘대로 해도 아무 문제가 없지만서비스를 배포한 뒤에는 기존 데이터베이스는 매우 소중하게 여겨야한다는 것을 알게됐다.데이터베이스는 우리 서비스의 핵심이니 가장 보수적으로 다뤄야한다. 그와중에 우리는 테스트 서버도 없는 상태 (그저 감자)테스트 서버를 배포하기 전 운영 데이터베이스와 테스트 데이터베이스를 분리하자 WHATTEST DB 생성 ▷ TEST DB에 기존 DB 데이터 복사 ▷ 추가 설정 TEST DB 생성1. linux 서버 접속 (루트권한으로) 2. MySQL 접속mysql -u root -p 2. test DB 생성create database 데이터베이스이름; 3. test용 user 생성create user '유저이름'@'%' identifi..

WHYjava와 spring을 이용하여 주로 개발하므로 intelliJ에 SSH를 연결해놓으면 편하게 개발할 수 있을 듯하여 기존에는 mobaXterm만 이용하여 배포를 했지만 intelliJ로 연결해보기로 했다. 근데 사용해본 결과 편의성 부분에서는 mobaXterm이 더 편하긴함..그래도 프로그램 하나에서 다 해결가능하다는 점에서 intelliJ도 나쁘지않다 WHATAWS의 EC2를 intelliJ에서 SSH로 접근하기 HOW(EC2배포는 했다고 가정)SSH 연결 1. Deployment → Browse Remote Host서버 네임 원하는 이름으로 설정 2. Deployment 설정Type : SFTP 선택(아마도 기본으로 선택되어있음) FTP도 선택 가능하나 보안면에서 SFTP를 사용하는 것이 좋..

📍 기존 코드와 문제점 1. 문제 상황 사용자가 학습하는 전체 리스트를 업데이트 해줘야하는데 이 때 대략 통신이 5초이상 걸린다는 것을 알게됐다. 2. 현재 코드 흐름 public String updateCardWeakSound(Long userId){ //card weaksound 테이블 해당 userId 행 전부 삭제 cardWeakSoundRepository.deleteByUserId(userId); List cardList = getCardListWithoutSentence(); List phonemeList = getPhonemeList(userId); cardList.forEach(card -> { Lis..

💥 문제문제 1 : ios 앱 개발을 하면서 프론트 측에서 Http response Body의 한글 값이 깨졌다. 해결 1 : 그래서 항상 헤더에 utf-8 인코딩을 넣어서 보내줬다.public ResponseEntity postCardInfo(@PathVariable("cardId") Long cardId) { CardInfoResponseDto cardInfoResponseDto = cardInfoService.getCardInfo(1L, cardId); //utf-8인코딩 HttpHeaders headers = new HttpHeaders(); MediaType mediaType = new MediaType("application", "js..
@RestControllerAdvice@ResponseBody와 @ControllerAdvice를 결합한 Annotaiton으로 전역으로 에러를 처리하고 자동으로 http body에 예외 정보를 넣어준다. @Slf4j@RestControllerAdvicepublic class MainExceptionResolverController { @ExceptionHandler(IllegalArgumentException.class) public ResponseEntity illegalArgumentExceptionHandler(IllegalArgumentException ex){ ExceptionDto exceptionDto = new ExceptionDto("IllegalArgumentE..