전체 글
H2 console 세팅 & 접속
1. yaml 설정 # h2 yaml spring: datasource: hikari.jdbc-url: jdbc:h2:mem://localhost/~/testdb;MODE=MYSQL jpa: hibernate: direct: org.hibernate.dialect.MySQL5InnoDBDialect ddl-auto: create h2: console: enabled: true 2. 웹 콘솔 접속 http://localhost:8080/h2-console 3. JDBC URL 수정 jdbc:h2:mem://localhost/~/testdb;MODE=MYSQL 복사 후 JDBC URL에 붙여넣기 4. 접속 Connect 버튼을 눌러 접속한다.
[Git] Git Flow 전략
🔍 주제 Git Branch 전략 중 하나인 Gir Flow는 프로젝트를 전략적으로 관리할 수 있도록 하는 전략입니다. Git Flow전략에서의 브랜치 종류 5개 feature/{티켓기능} : 개발자가 특정 기능을 개발할 때 사용하는 브랜치 develop : 개발 브랜치, 기능 구현 완료 후 develop에 머지 release : 배포(출시)하기 위해 준비하는 브랜치, release 브랜치의 코드를 바탕으로 QA팀에서 QA를 수행 master : 실제 서비스로 런칭될 코드가 런칭되는 브랜치, 프로덕트 레벨 hotfix : 버그 수정 등 긴급 패치 시 사용하는 브랜치, 수정된 내용은 develop과 master에 동시에 머지 협업툴인 Slack, Jira와 함께 사용하면 더 효율적으로 사용할 수 있다. 개..
[JPA] 연관 관계를 가진 엔티티의 생성
다대일의 관계에서 데이터를 저장할 때 연관관계를 매핑시키는 방법에 대한 글입니다. 문제상황 "유저는 여러 개의 상점을 등록할 수 있다." 상점을 저장하기 위해 유저에 대한 정보를 갖게 해줘야 했습니다. (비슷한 경우는 게시물 저장 시 사용자의 정보 갖게 하기) 먼저 저장에 사용되는 Store 엔티티와 DTO를 알아보겠습니다. 👉 Store 엔티티 @Getter @NoArgsConstructor @Entity public class Store extends BaseTimeEntity { @Id @Column(name = "STORE_ID") @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false..
[JPA] hibernate.ddl-auto 옵션 정리
hibernate.ddl-auto 속성이란? Spring Boot 서버가 실행될 때 연결된 DBMS의 스키마의 변경이 있을 때 어떤 방법으로 변경할 지 정하는 속성이다. 이때 사용할 수 있는 전략은 4가지가 있다. none: 변경하지 않음 (대부분의 DB에서 디폴트값) update: 변경된 스키마만 적용 validate: 변경된 스키마가 있는지 확인하고 변경이 있다면 Application을 종료 create: 시작될 때 테이블을 DROP 하고 테이블을 다시 생성 create-drop: 시작과 종료에서 모두 drop 개발 초기 단계 : create 또는 update 테스트 서버 : update 또는 validate 스테이징, 운영 서버 : validate 또는 none
[Git] remote url 변경
변경 전 확인 git remote -v 변경 (fetch, pugh 모두) $git remote set-url 변경 후 확인 git remote -v
Call by Value 와 Call by Reference
Call by Value 값에 의한 호출 함수에 매개 변수를 복사해서 처리 복사해서 처리하기 때문에 원래의 값이 보존된다. 복사하기 때문에 메모리량이 늘어난다. Call by value는 메서드 호출 시에 사용되는 인자의 메모리에 저장되어 있는 값(value)을 복사하여 보낸다. Call by Reference 참조에 의한 호출 인자로 받은 값의 주소를 참조해 직접 값에 영향을 주는 것 복사하지 않고 직접 참조를 하기 때문에 빠르다 직접 참조를 하기 때문에 원래 값이 영향을 받는다. Call by reference는 메서드 호출 시 사용되는 인자 값의 메모리에 저장되어있는 주소(Address)를 복사하여 보낸다.
[L.E.Assemble] nginx 로드밸런싱 적용과 배포 스크립트 수정
1. /api 경로에 대해 두 개의 App으로 로드밸런싱 2. 배포 시나리오 수정 변경 전 상황 1. EC2에는 두 개의 App이 존재하고 로드밸런싱이 적용되지 않았다. 2. 모든 요청은 하나의 App이 처리하고 쉬고있는 App이 존재한다. 배포 시나리오 요약 1. 휴식중인 App을 찾고 배포한다. 2. 배포가 완료되면 휴식중이던 App을 서비스할 App으로 변경 (switch) CodeDeploy 흐름 1. AfterInstall [stop.sh, profile.sh] 1.1 8081, 8082 중 쉬고있는 port의 App 선택 1.2 쉬고있는 port의 App 종료 2. ApplicationStart [start.sh, profile.sh] 2.1 빌드파일 복사해와서 권한 부여 2.2 쉬고있는 po..
[L.E.Assemble] 소셜 로그인 (카카오, 구글)
Spring Boot 환경에서의 OAuth2 소셜로그인 Spring Boot 구조로 구성된 L.E.Assemble 프로젝트에 적용한 OAuth2 소셜로그인에 대해 정리해봅니다. 📕 핵심 개념 OAuth2 (Open Authentication 2) 인증을 위한 표준 프로토콜 구글, 페이스북, 카카오 등에서 제공하는 Authorization Server를 통해 회원 정보를 인증하고 Access Token 발급 발급받은 Access Token을 이용해 타사의 API 서비스를 이용한다. OAuth2 구성 요소 Client : 제 3의 서비스 Resource Server(자원 서버) : OAuth2 서비스를 제공하고, 자원을 관리하는 서버 Resource Owner(자원 소유자=사용자) : Resource Ser..
[L.E.Assemble] Spring Boot 프로젝트 구성
전체 프로젝트 구성도 "스프링 부트와 AWS로 혼자 구현하는 웹 서비스" 서적을 참고하여 프로젝트를 구성하였고 필요에 따라 기술을 선택하여 프로젝트에 사용하였다. Front-end : Mustache Back-end : Spring Boot Server : AWS EC2 - Reverse proxy : nginx - Load Balancing : nginx CI : Travis CI CD : AWS S3, AWS CodeDeploy DB : AWS RDS - Maria DB Storage : AWS S3 Cache: AWS ElasticSearch redis 그 외 도구 Build : Gradle, npm Testing : JUnit, NGrinder, Postman Authentication : OAu..
SQL vs NoSQL
SQL 스키마를 준수 관계가 존재함 수직적 확장(서버 성능 향상) NoSQL 스키마 없음 관계 없음 수평적 향상(서버 추가) 데이터정합성이 보장되어야함 vs 낮은 지연 시간, 가용성이 중요한 SNS 시스템 데이터베이스 확장에 있어서 유연성이 필요한가 엄격한 스키마를 준수해야하는가 Read, Write의 빈도, 응답속도 Update가 필요한 데이터인가 등을 따져서 저장될 DB를 선택한다. 참고 https://velog.io/@thms200/SQL-vs-NoSQL SQL vs NoSQL SQL, NoSQL의 차이에 대해 알아보자.SQL, NoSQL을 언급할 땐 각 단어 뒤에 DB를 붙여야겠다는 생각을 했다.SQL, NoSQL 비교하기 위해 자료를 구글링하면SQL은 관계형 DB, NoSQL은 그와 반대되는 비..