본문 바로가기

전체 글

Vinish 프로젝트 에러 기록 1. 이런 에러 뜨면 DB랑 프로젝트 연결이 안 되어서 발생하는 에러다. 이번의 경우, application.yml의 jpa - properties부분에서 properties: hibernate: dialect: org.hibernate.dialect.MySQL5InnoDBDialect default_batch_fetch_size : 100 show_sql: true format_sql: true dialect부분을 org.hibernate.dialect.H2Dialect 에서 org.hibernate.dialect.MySQL5InnoDBDialect 로 변경하니 해결됨. 2. nested exception is java.lang.NullPointerException: Cannot invoke "org... 더보기
EC2에 redis 설치 & 백그라운드 실행 (우분투 기준) Redis 설치하기 https://any-ting.tistory.com/89 [Redis] Redis Ubuntu 설치 및 실행 - 개요 안녕하세요. 이번 시간에는 Ubuntu에서 Redis를 설치하는 방법에 대해 알아보겠습니다. - 설치 설치 방법은 두 가지 방식이 있습니다. apt 패키지를 통해 설치하는 방법과 소스코드 다운로드 any-ting.tistory.com 만약 redis-server 실행 시, "Warning: Could not create server TCP listening socket *:6379: bind: Address already in use" 에러 뜨며 실행 안 되면, sudo service redis-server stop 작성 후 다시 실행해 보면 잘 됨 (.. 더보기
코드 리팩토링 기록 - JPA Embedded 타입 활용 전체적으로 코드를 깔끔하게 짜고, 컨벤션을 맞추기 위해 여러번 리팩토링을 진행하긴 했지만 기록에 남기고 싶은 리팩토링을 포스팅으로 쓰고자 한다. 간단하게 말하면, JPA의 Embedded 타입을 활용해서 Entity class의 코드를 깔끔하게 유지시켰다. Board와 BoardComment를 예시 코드로 이게 무슨 말인지 보자. @Getter @NoArgsConstructor @Entity @DynamicUpdate @Table(name = "tbl_all_board") public class Board extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "board_id") private .. 더보기
JMeter 성능 테스트 기록 백엔드 개발을 다 끝내고, 배포된 ec2에서 각 도메인의 부하 테스트를 JMeter를 통해 진행하였다. 가장 잘 나온 테스트 기록의 경우, 다음과 같다. 스터디 게시물 전체 조회를 테스트해 봤는데, 조건은 유저 1000명이 이 작업을 100번 반복하게 하였다. 왼쪽 수치는 TPS(Transaction per second)로 보통 worst case를 동접 가능로 잡기 때문에 동시접속 약 500명을 커버한다고 볼 수 있다. 다른 결과들은 다음과 같다. 테스트 : 게시물 수정, 저장, 검색, 전체 조회 조건 : 유저 500명이 해당 작업을 10번 수행 테스트 : 게시물 댓글 리스트 조회, 댓글 생성, 댓글 수정 조건 : 유저 500명이 해당 작업을 10번 수행 테스트 : 채용 공고 전체 조회, 검색, 상세 .. 더보기
JPA 쿼리 최적화 기록 프로젝트에서 진행했던 쿼리 최적화들을 기록해본다. 1. join fetch 활용 ex) 게시물 상세 조회 쿼리를 3번 → 2번으로 줄임 //변경 전 User user = userRepository.findById(userId).orElseThrow(UserNotFoundException::new); Board board = allBoardRepository.findBoard(boardId).orElseThrow(BoardNotFoundException::new); boardLikeRepository.save(BoardLike.builder().user(board.getUser()).board(board).build()).getId(); //변경 후 Board board = allBoardRepositor.. 더보기
MySql 시간 설정 삽질 기록 + 기타 기록 DB에 데이터가 들어갈 때, 계속 UTC 타임으로 설정이 되어 있어서 9시간씩 일찍 시간이 들어갔다. 로컬에서 할 때는 잘 되었는데, 이상하게 ec2에서 그런 일이 발생했다. 그래서 그걸 고치는 과정에서 한 삽질을 기록해본다. 결론적으로 말하면, ec2가 돌아가는 서버(우분투)에서의 시간 설정을 해주면 된다. 그걸 몰라서..우분투 안의 mysql server timezone을 바꾼다고 엄청 삽질했다.. 일단, 서버 시간을 바꾸는 방법은 아래 포스팅에서 timedatectl을 사용해서 해결했다. https://blog.buffashe.com/2020/02/changing-ubuntu-timezone/ [MySQL] mysql server timezone 한국으로 설정하기. timezone이란? (넘어가실 .. 더보기
SpringBoot Dockerize 기록 Spring Boot를 도커라이즈 했던 과정이 결코 쉽지는 않았어서, 기록으로 좀 남겨두고자 한다. 1. 빌드 파일(jar) 생성 gradle > Tasks > build > bootJar 클릭 2. 프로젝트 최상단 위치에 Dockerfile과 docker-compose.yml 작성 Dockfile FROM openjdk:8 ARG JAR_FILE=build/libs/ssafe-0.0.1-SNAPSHOT.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java", "-jar", "/app.jar"] JAR_FILE에는 jar파일의 경로를 넣어준다. docker-compose.yml version: "3" services: database: image: mysql containe.. 더보기
MobaXterm을 통한 배포 기록 ssafé 프로젝트에서 배포는 싸피에서 제공한 ec2 서버를 통해서 진행하였다. 싸피 측에서 ec2 세팅은 다 해두고 우리는 pem키만 지급받아서 배포만 하면 되는 상태였기 때문에, 일반적인 아마존 GUI를 사용할 수 없었다. 그래서 그나마 CLI를 최소화하고 GUI를 제공하는 툴인 'MobaXterm'을 사용해서 배포했는데, 그 과정과 삽질의 기록을 남긴다. 🤓 배포 과정 1. mobaXterm 설치 2. Session → SSH 작성 Remote host : 원격 접속할 ip/’도메인’ → 싸피 제공의 경우 i6a604.p.ssafy.io/ username : ubuntu advanced SSH settings → Use private Key에서 pem키 등록 3. 접속하여 mysql, nginx 설.. 더보기