전체 글

전체 글

    [CS] 기술면접 정리

    노션으로 작성했는데 티스토리로 글을 옮길 때 띄어쓰기가 다 꼬입니다... 목차 운영체제 네트워크 데이터베이스 알고리즘 자료구조 보안 링크 https://lime-cover-28e.notion.site/CS-71d0f0a18d304a00868ed23c7a58c8f3 기술면접(CS요약) 목차 lime-cover-28e.notion.site 참고자료 https://gyoogle.dev/blog/interview/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC.html https://github.com/ksundong/backend-interview-question https://github.com/JaeYeopHan/Interview_Question_for_Beginner https://ma..

    [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은 그와 반대되는 비..

    인증과 인가란?

    📖 인증이란? (Authentication) 보호된 리소스에 접근하는 것을 허용하기 이전에 등록된 유저의 신원을 입증하는 과정 📖 인가란? (Authorization) 요청된 리소스에 접근할 수 있는 권한이 있는 인증된 유저인지 입증하는 과정 인증된 사용자만이 인가 받을 수 있다. 인증된 사용자만이 인가받을 수 있다. 인가 받은 "인증된 사용자"만이 요청된 자료에 접근할 수 있다. 인증과 인가의 방법 인증하기 : Request Header 인증 유지하기 : 브라우저의 쿠키, Session 안전하게 인증하기 : Server 효율적으로 인증하기 : Token (Ex: JWT : Json Web Token) 다른 채널을 통해 인증하기 : OAuth 1. Request Header 사용자는 Request Hea..