공부/프로젝트8 JPA에서 낙관적 락을 적용해보자 문제이슈 내편(내 마음을 편지로) 서비스에서 롤링페이퍼의 메세지에 좋아요를 누를 수 있는 기능이 있습니다. - 메세지 좋아요에 엄청난 연타를 누르거나 - PC, 모바일에서 좋아요를 동시에 눌렀을 때 다음과같은 이슈가 발생하였습니다. 중복된 데이터가 쌓였습니다! 메세지 좋아요 테이블에는 같은 member_id, message_id가 공존하면 안됩니다. 기존 코드 public MessageLikeResponseDto likeMessage(Long memberId, Long rollingpaperId, Long messageId) { // 메세지 좋아요 대상 "메세지"를 찾는다. final Message message = messageRepository.findById(messageId) .orElseThro.. 2022. 10. 27. restdocs를 사용해보자 RestDocs이란? Spring REST Docs helps you to document RESTful services. It combines hand-written documentation written with Asciidoctor and auto-generated snippets produced with Spring MVC Test. This approach frees you from the limitations of the documentation produced by tools like Swagger. It helps you to produce documentation that is accurate, concise, and well-structured. This documentation the.. 2022. 7. 29. Flyway를 사용하는 이유 Flyway Flyway는 DB의 형상관리를 목적으로 하는 툴이다. 1. DB Migration 필요한 것일까? 현재 우리는 배포 후 데이터를 관리해본 경험이 없다. 유지 보수 중 스키마 구조가 바뀌는 상황에 어떻게 대처할 것인가? 예제로 알아보자 현재 유지보수 중인 테이블 (SampleEntity)이 다음과 같다고 가정하자! @Entity public class SampleEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; } 헌데, 새로운 요구사항이 추가되었다. age 필드를 추가해야한다. 그렇다면, Entity에서는 단순히 private Integer age를 추가하면.. 2022. 7. 29. 젠킨스 pipeline를 설정해보자 젠킨스 pipeline을 적용한 결과 pipeline { agent any stages { stage('Github clone') { steps{ git branch: 'develop', url: '' } } stage('BE build'){ steps{ dir('backend'){ sh''' echo build build ./gradlew clean build ''' } } } stage('Transfer env_setting(deploy.sh) and jar file to WAS'){ steps{ sshagent(credentials: ['aws-naepyeon-key']) { sh """ echo '내용입력' > /var/jenkins_home/deploy.sh scp /var/jenkins_hom.. 2022. 7. 26. [지원플랫폼] 플래닝포커를 해보자 목표 팀원들끼리 실행 가능한 계획을 세운다. 요구사항 : 무엇을 해야 하는 일인지 모두가 동일하게 이해 일정 : 우리 팀이 이 작업을 하는데 얼마나 걸릴지 예측 → 자율적이고 건강한 근로 생활 유지 플래닝 포커 해야 할 일들을 완료하는 데 필요한 일정을 함께 산정해보는 활동 플레이 방법 : 앱 scrum time 함께 일정을 산정할 작업을 정한다. 팀원들은 해당 작업에 어느 정도 일정이 필요할지 생각해보고 플래닝 포커 카드를 고른다. 모든 팀원이 고른 뒤, 동시에 각자 카드를 공개한다. 각자 왜 이 일에 이 정도의 시간이 걸린다고 생각했는지 의견을 나눈다. 나눈 의견을 바탕으로 새로 숫자를 합의한다. 플래닝 포커의 숫자 - 근로 기준으로 적용 플래닝 포커 1 = 1일 (최대 2시간) 플래닝 포커 5 = .. 2022. 7. 25. DB 서버를 연동해보자 1. DB설치(mysql) CREATE DATABASE naepyeon default CHARACTER SET utf8mb4; 2. TABLE 생성 create table member ( member_id bigint not null auto_increment, email varchar(255) not null, password varchar(255) not null, username varchar(20) not null, primary key (member_id) ) engine=InnoDB default charset utf8mb4; . . . - 테이블은 직접 SQL을 통해 적용한다. - 실제 배포용 yml의 ddl-auto를 validate로 고정시켰기 때문이다. 3. 설정파일을 적용한다. app.. 2022. 7. 25. 이전 1 2 다음