[WIL] Redis 분산 락
·
자기계발/항해플러스
😺본 글은 항해플러스 백엔드 9기 교육 과정 수강중 작성된 학습노트입니다.⚠️개인이 학습한 것을 바탕으로 작성되어 부정확할 수 있으며, 오류가 있다면 알려주시면 감사하겠습니다. ❔WIL(Weekly I Learned) 분산 락(Distributed Lock)이란? 분산 시스템에서 서로 다른 서버 인스턴스에 대한 일관된 락을 제공하기 위한 장치이다.여러 서버가 동시에 공유 자원에 접근할 때, 한 시점에는 오직 하나의 주체만 해당 자원을 변경할 수 있도록 하는 동기화 메커니즘이다.단일 서버 환경에서는 DB락 같은 방식으로 동시성 제어가 가능하지만,마이크로서비스(MSA), 멀티 서버 환경, 클러스터 환경에서는서버 간의 메모리를 공유하지 않기 때문에 이런 방식이 통하지 않는다. Redis(레디스) 분산..
[WIL] DB Lock을 이용한 동시성 제어(Java, Spring)
·
자기계발/항해플러스
😺본 글은 항해플러스 백엔드 9기 교육 과정 수강중 작성된 학습노트입니다.⚠️개인이 학습한 것을 바탕으로 작성되어 부정확할 수 있으며, 오류가 있다면 알려주시면 감사하겠습니다. ❔WIL(Weekly I Learned) 동시성 제어(Concurrency Control)동시성 제어는 여러 트랜잭션이 동시에 실행될 수 있도록 허용하면서도 데이터의 일관성, 무결성이 유지될 수 있도록 하여 전반적인 데이터 정합성을 보장할 수 있도록 하는 방법이다. 동시성 문제여러 트랜잭션(또는 스레드)이 DB에 접근하려고 하면 어떻게 될까?상품 재고를 차감하려는 여러 트랜잭션이 있다면?💡트랜잭션(Transaction)이란?더 이상 나눌 수 없는 하나의 완결된 작업 단위모든 과정이 완료되어야 의미가 있는 작업의 최소 단위일반..
[WIL] JPA와 테스트 컨테이너
·
자기계발/항해플러스
😺본 글은 항해플러스 백엔드 9기 교육 과정 수강중 작성된 학습노트입니다.⚠️개인이 학습한 것을 바탕으로 작성되어 부정확할 수 있으며, 오류가 있다면 알려주시면 감사하겠습니다. ❔WIL(Weekly I Learned) JPA(Java Persistence API) JPA는 Java 진영에서 사용되는 ORM 기술 표준이다.JPA는 인터페이스이기 때문에 실제적으로 JPA를 구현한 ORM 프레임워크는 Hibernate, OpenJPA, EclipseLink 등이 있다.ORM 프레임워크 중에서는 Hibernate가 많이 사용된다고 한다.💡ORM이란?데이터베이스의 테이블과 객체를 연결하여, SQL 쿼리 없이 객체 조작만으로 데이터베이스 작업을 가능하게 하는 기술. JPA - Hibernate 사용 방법의존성..
[WIL] 레이어드 아키텍처(Layered Architecture)
·
자기계발/항해플러스
😺본 글은 항해플러스 백엔드 9기 교육 과정 수강중 작성된 학습노트입니다.⚠️개인이 학습한 것을 바탕으로 작성되어 부정확할 수 있으며, 오류가 있다면 알려주시면 감사하겠습니다. ❔WIL(Weekly I Learned) 레이어드 아키텍처(Layered Architecture) 레이어드 아키텍처는 가장 일반적인 아키텍처로 대부분의 Java EE 애플리케이션에서 사실상 표준으로 사용되고 있다.아키텍처 이름 그대로 n개의 계층이 레이어 처럼 구성되어 있는 패턴이며, 보통 4가지의 계층으로 구성된다.각각의 계층은 애플리케이션 내에서 특정 역할과 책임을 갖는다. 각 계층의 역할과 책임이렇게 각 계층마다 역할과 책임을 분리하는 이유는 무엇일까?🤔바로 구성 요소간의 관심사를 분리하기 위해서다.개인적으로는 객체지향설..
[WIL] 개발의 시작 단계: 설계
·
자기계발/항해플러스
😺본 글은 항해플러스 백엔드 9기 교육 과정 수강중 작성된 학습노트입니다.⚠️개인이 학습한 것을 바탕으로 작성되어 부정확할 수 있으며, 오류가 있다면 알려주시면 감사하겠습니다. ❔WIL(Weekly I Learned) 📑분석 및 설계 단계의 산출물들요구사항 명세서: 프로젝트의 기능과 특징, 설계 및 제한사항들이 담긴 기술 문서기능: 시스템이나 소프트웨어가 수행해야 하는 특정 기능 또는 작업을 정의비기능: 시스템의 품질, 성능, 보안, 유지보수 등과 관련된 요구사항을 정의 시퀀스 다이어그램: 시스템 내에서 객체(또는 서비스)들이 어떻게 상호 작용하는지를 시간 순서대로 표현하는 다이어그램클래스 다이어그램: 시스템에서 사용되는 객체(Class)들의 구조와 관계를 표현하는 다이어그램상태 다이어그램: 객체 또..
[WIL] TDD? 들어는 봤는데, 직접 작성해 보라구?!
·
자기계발/항해플러스
😺본 글은 항해플러스 백엔드 9기 교육 과정 수강중 작성된 학습노트입니다.⚠️개인이 학습한 것을 바탕으로 작성되어 부정확할 수 있으며, 오류가 있다면 알려주시면 감사하겠습니다. ❔WIL(Weekly I Learned) 테스트 코드 작성 첫 도전기 'TDD' 들어는 봤지만, 직접 작성해본 경험이 없어서 굉장히 당황했다.하루종일 작성한 코드를 몽땅 삭제하고, PR 작성에 서툴러 과제 제출 20분 전에 후다닥 수정하고..우당탕탕 TDD 학습 주간이었다.😓 TDD에 대하여 TDD(테스트 주도 개발)는 요구사항의 기능을 개발하기 전에 실제적인 구현보다 테스트 코드를 먼저 작성하여, 작은 단위의 테스트 케이스를 통과하는 코드를 작성하는 것을 반복하여 기능을 구현하는 소프트웨어 방법론이다. 2002년 켄트 벡이..
[개발자 커리어 회고] 시작하는 마음
·
자기계발/항해플러스
지금까지 개발자 커리어 회고심리학 전공을 그만두고 개발자의 길로 들어서다고등학생 때부터 목표했던 상담사의 꿈은 대학원 진학 실패와 취직 압박으로 잠시 접어두고, 새로운 진로 '개발자'를 꿈꾸게 되었다.개발자 부트캠프가 취업 연계를 해준다는 친구의 말에 교육과정에 참여하게 되었다.빅데이터 서비스 개발자 과정에 참여하면서 `Java`, `Python` 등의 프로그래밍 언어를 익히고, 새로운 지식들을 이해하고 머릿속에 집어넣기 바쁜 나날을 보냈다.(그 당시 `for문`을 이용해 별 짓기 코드를 짜는 것을 어려워해서 부끄러웠던 기억이 있다..😅)크고 작은 여러 프로젝트를 진행하며, 팀원들과 토의하고 밤 10~11시까지 코딩하며 어떻게든 마무리하려 애를 썼었다.6개월의 시간이 지나 과정을 무사히 수료했고, 첫 ..
[사전스터디/Java] Java 언어 강의 학습노트③
·
자기계발/항해플러스
😺본 글은 항해플러스 백엔드 9기 과정의 일환인 개강 전 '사전스터디'의 학습노트입니다.⚠️개인이 학습한 것을 바탕으로 작성되어 부정확할 수 있으며, 오류가 있다면 알려주시면 감사하겠습니다. 강의 수강 목록Optional - null을 다루는 법컬렉션(Collection)제네릭(Generic)람다(Lambda)스트림(Steram) Optional - null을 다루는 법왜 Optional이 필요한가?기본적인 null 체크 방법은 아래와 같다.String name = getUserName();if (name != null) { System.out.println(name.length());} ⚠️ 문제점: null 체크를 매번 해야 하고, 실수로 빼먹으면 `NullPointerException` Op..
[사전스터디/SprintBoot] 학습노트③📝(회원가입, 로그인 API 구현, AWS 배포)
·
자기계발/항해플러스
😺본 글은 항해플러스 백엔드 9기 과정의 일환인 개강 전 '사전스터디'의 학습노트입니다.⚠️개인이 학습한 것을 바탕으로 작성되어 부정확할 수 있으며, 오류가 있다면 알려주시면 감사하겠습니다. 🗣️3주차 진행여행으로 인한 미참석 🌟4주차 목표회원가입 및 로그인 API 구현JWT 토큰 발행AWS EC2 배포 회원가입 및 로그인 API 구현`UserService`와 `UserController`를 구현했다. DTO는 `LoginRequestDto`, `LoginResponseDto` 로그인 요청과 응답`SignupRequestDto`, `SignupResponseDto` 회원가입 요청과 응답총 4개를 만들었다.로그인 요청과 회원가입 요청은 똑같아서 같이 쓸까 하다가, 추가적으로 닉네임이나 이메일 같은 필..
[사전스터디/Java] Java 언어 강의 학습노트②
·
자기계발/항해플러스
😺본 글은 항해플러스 백엔드 9기 과정의 일환인 개강 전 '사전스터디'의 학습노트입니다.⚠️개인이 학습한 것을 바탕으로 작성되어 부정확할 수 있으며, 오류가 있다면 알려주시면 감사하겠습니다. 강의 수강 목록객체지향 PART 2 - 상속객체지향 PART 3 - 추상화객체지향 PART 4 - 다형성예외(Exception)과 예외처리(try-catch)상속상속은 클래스간의 관계를 `부모`, `자식`으로 바라보는 개념`extends` 키워드를 자식 클래스에 사용해서 상속받음// 부모public class Parent { public String familyName = "스파르탄"; public int honor = 10; public void introduceFamily() { S..