분류 전체보기
-
23/12/15 CI/CD오늘/Today I.. 2023. 12. 15. 13:48
CI (Continuous Integration, 지속적 통합) CD (Continuous Delivery, 지속적 배포) CI . 지속적 통합 코드 변경사항을 레포지토리에 지속적으로 업로드하여 통합하는 것. 이 과정에서 발생할 수 있는 오류를 빠르게 수정하는 것이 중요하다. 테스트와 빌드 과정은 반복적이기 때문에 자동화할 수 있다. 그래서 자동화된 단위 테스트, 통합 테스트를 실행하여 변경 사항이 제대로 적용되었는지 확인한다. CI의 장점 1. 자동화된 빌드와 테스트를 통해 빠르게 에러를 잡아낼 수 있다. 2. 커밋을 자주하게 됨으로써 문제의 원인을 쉽게 찾아낼 수 있다. 3. 지속적으로 에러를 찾아내 수정함으로써 코드의 안정성이 높아져, 코드품질이 높아진다. 4. 팀의 모든 개발자가 같은 코드베이스를..
-
23/12/14 스프링에서 static 사용을 지양하는 이유오늘/Today I.. 2023. 12. 14. 17:04
최근 자바책을 펴 볼 기회가 있었다. 그 책에서는 익숙하게 사용하였지만, 스프링에서는 뭔가 위화감이 드는 부분을 발견하였는데 스프링에선 클래스에 static을 쓰지 않는다는 것이다. 생각보다 사소한 변화였기에 왜 이상한지 그동안 알아차리지 못하였는데 그 이유를 적어보고자 한다. static을 지양하는 이유 첫번째. 스프링은 기본적으로 빈을 싱글톤으로 관리한다. 그렇기 때문에 하나만 생성되어 여러곳에서 공유하여 사용하는 것이 일반적인 사용방법인데, static은 인스턴스가 아닌 클래스 수준에서 관리되기 때문에 싱글톤 빈의 생명주기와 맞지 않게 된다. 두번째. 테스트 호환성 문제 static은 실행시점에 초기화된 후 종료시점까지 메모리에 남아있는다. 그래서 테스트 수행 시 한 테스트 케이스에서 static ..
-
23/12/13 Docker란?오늘/Today I.. 2023. 12. 13. 22:35
컨테이너 기반의 오픈소스 가상화 플랫폼 컨테이너란? 소프트웨어와 그 dependency를 하나로 패키징하는 것. 이렇게 패키징한 소프트웨어는 어느 환경에서도 동일하게 실행할 수 있다. 도커의 특징 1. 독립성과 표준화 컨테이너는 독립적으로 실행, 실행에 필요한 모든 요소를 포함하므로 어떤 환경에서도 동일하게 작동 2. 경량성 가상머신은 환경에 OS를 포함시키기 때문에 무겁다. 하지만 도커는 호스트 시스템의 운영체제를 공유하기 때문에 별도의 OS를 포함하지 않아서 훨씬 적은 자원을 사용한다. 3. 이식성 컨테이너는 어느 환경에서도 작동하기 때문에 이식성이 좋다 4. 버전관리 버전관리를 지원함. 5. 확장성 도커를 사용하는 이점 1. 환경 일관성 어떤 환경에서도 동일하게 작동하기 때문에 "저는 되는데 왜 서..
-
23/12/12 JPA와 QueryDSL 의 차이오늘/Today I.. 2023. 12. 13. 00:11
JPA (Java Persistence API) - 자바표준 ORM 기술. - SQL이 아닌 자바코드로 DB CRUD를 처리할 수 있게 도와줌 - 개발자가 SQL을 직접 작성하지 않아도 되어 편리 - DB 간 호환성을 높여줌 - 다만 쿼리에 오류가 있을 경우, 런타임에서만 확인가능 QueryDSL - Type-Safe한 쿼리를 작성할 수 있게 해주는 프레임워크 - 쿼리를 자바코드로 작성하기 때문에 컴파일 시점에 쿼리의 문법 오류를 잡아낼 수 있다. - 동적 쿼리 작성이 용이 - 코드 자동완성 등의 IDE 도움을 받을 수 있다. 선택 JPA는 쿼리작성의 편리성과 DB간 호환성 중요시 적합 QueryDSL은 Type - Safe한 쿼리 작성과 동적쿼리 필요시 적합 그렇지만 JPA로 기본적인 CRUD 연산을 ..
-
[스프링 팀프로젝트] IPv4 KPT스파르타코딩클럽/스프링 팀 프로젝트 - Back Office 2023. 12. 11. 15:05
IPv4 | Built with Notion Built with Notion, the all-in-one connected workspace with publishing capabilities. teamsparta.notion.site 1. 프로젝트 개요 프로젝트 명 : X보다 더 나은 Y 프로젝트 설명 : X와 Threads향을 조금씩 가미한 SNS 백엔드 서버 API 필수구현 사용자 인증 (회원가입, 로그인 및 로그아웃) 프로필관리 (프로필 수정, 비밀번호 수정) 게시글 CRUD 추가구현 소셜로그인 (카카오, 네이버) 백오피스 (admin 권한) 좋아요 팔로우 명예의전당 프로필 사진 업로드 게시물 멀티미디어 지원 기능 2. Keep 1. 소통을 중요시하며 자리 비움이나 문제가 생기면 빠르게 공유하겠습..
-
복합키(Composite key)란?스파르타코딩클럽/스프링 팀 프로젝트 - Back Office 2023. 12. 7. 20:52
복합키란 "두 개 이상의 열(column)을 결합하여 하나의 특별한 키로 만든 것" 특징 1. 각각의 키가 유일하지 않을 경우 여러 키를 결합하여 행의 유일성 보장 2. RDB에서 주로 사용되며, 연결테이블에서 많이 사용된다. 3. 종종 FK와 결합되어 사용되며, 두 테이블간의 관계를 보다 명확하게 표현 가능 간단히 내가 이해한것을 써보자면 복합키는 PK가 여러개이다. 그래서 DB는 여러개의 PK를 가진 객체가 서로 같은것인지 확인하기 위해 PK를 객체(=구현체)로 묶어서 확인한다. 프로젝트 내에서 Follow를 구현하기 위해 처음에 복합키를 고려하였다. @Entity @Getter @RequiredArgsConstructor @IdClass(FollowID.class) public class Follo..
-
PUT 그리고 PATCH스파르타코딩클럽/스프링 팀 프로젝트 - Back Office 2023. 12. 6. 21:28
@PatchMapping @PutMapping 간단하게 PATCH는 일부분만 변경 PUT은 전체 변경으로 알려져있다. 다만 PUT에서 데이터를 일부분만 전달할 경우. 입력하지 않은 값은 null이 들어가며, 이 데이터를 지워달라는 요청으로 해석하고 데이터에 null 값을 넣어 데이터를 삭제된 상태로 만든다. PUT과 PATCH의 가장 큰 차이점은 멱등성이다. 멱등성이란? 동일한 연산을 여러 번 적용해도 결과가 달라지지 않는 성질을 말한다. PUT은 멱등성을 가지고 있으며, PATCH는 멱등성을 가지고 있지 않다. 그래서 PUT은 동일 데이터로 특정 필드를 계속 업데이트해도 항상 같은 결과가 나온다. 하지만 PATCH는 멱등성을 가지지 않기 때문에 동일한 연산을 하더라도 다른 결과가 나올 수 있다. (다만..
-
팀프로젝트 Init commit스파르타코딩클럽/스프링 팀 프로젝트 - Back Office 2023. 12. 5. 21:06
Spring 백오피스 프로젝트 Threads SNS 제작 게시글, 댓글, 좋아요, 팔로우 기능을 구현한 SNS 만들기 사용자 인증 기능 회원가입 기능 username, password를 Client에서 전달받기 username은 최소 4자 이상, 10자 이하이며 알파벳 소문자(a~z), 숫자(0~9)로 구성되어야 한다. password는 최소 8자 이상, 15자 이하이며 알파벳 대소문자(a~z, A~Z), 숫자(0~9), 특수문자로 구성되어야 한다. DB에 중복된 username이 없다면 회원을 저장하고 Client 로 성공했다는 메시지, 상태코드 반환하기 회원 권한 부여하기 (ADMIN, USER) - ADMIN 회원은 모든 게시글, 댓글 수정 / 삭제 가능 참고자료 https://mangkyu.tis..