이번 프로젝트 때 스프링 부트로 1 : 1 채팅을 구현해야 합니다. 그래서 여러 가지 내용을 열심히 공부해 봤습니다. 프로젝트 채팅 1 : 1 조건 고민 상담 게시판에서 채팅방이 시작됨 채팅 매칭을 누르면 채팅방이 생성 대화를 한 내용은 DB에 저장 세션 값을 가지고 있어야 한다. WebSocket을 선택한 이유 WebSocket은 양방향 실시간 통신을 제공하는 프로토콜 및 API(응용 프로그래밍 인터페이스)입니다. 일반적으로 웹 브라우저와 웹 서버 간의 실시간 통신을 위해 사용됩니다. WebSocket은 기존의 HTTP 프로토콜을 확장하여 지속적인 연결을 제공하고, 클라이언트와 서버 간에 데이터를 양방향으로 주고받을 수 있게 합니다. WebSocket을 사용하기 전 일반적으로 웹은 클라이언트에서 서버로..
토이프로젝트
저번 글에서는 스프링 시큐리티를 이용해 세션 기반 인증을 하였습니다. 세션 기반 인증을 사용해 사용자마다 사용자의 정보를 담은 세션을 생성하고 저장해서 인증을 합니다. 토큰 기반 인증은 서버가 토큰을 생성해서 클라이언트에게 제공하면, 클라이언트는 이 토큰을 갖고 있다가 여러 요청을 이 토큰과 함께 신청합니다. 그럼 서버는 토큰만 보고 유효한 사용자인지 검증합니다!! 토큰을 전달하고 인증받는 과정 클라이언트가 아이디어와 비밀번호를 서버에게 전달하면서 인증을 요청합니다. 서버는 아이디어와 비밀번호를 확인해 유효한 사용자인지 검증합니다. 유효한 사용자면 토큰을 생성해서 응답합니다, 클라이언트는 서버에서 준 토큰을 저장합니다. 이후 인증이 필요한 API를 사용할 때 토큰을 함께 보냅니다. 서버는 토큰이 유효한지..
https://product.kyobobook.co.kr/detail/S000201766024 스프링 부트 3 백엔드 개발자 되기: 자바 편 | 신선영 - 교보문고 스프링 부트 3 백엔드 개발자 되기: 자바 편 | ★ 자바 백엔드 개발자가 되고 싶다면★ 자바 언어 입문 그다음에 꼭 보세요실력을 갖춘 개발자로 성장하려면 시작이 중요합니다. 그래서 이 책은 product.kyobobook.co.kr 이번 방학 동안 이 책으로 스프링 부트 3을 공부해 보려고 합니다. 이 책은 스프링 부트 3을 사용해 웹페이지를 직접 구현해 봅니다. 그중 스프링 시큐리티로 로그인 및 회원가입을 구현하는 부분이 나옵니다. 그래서 이번 기회에 스프링 시큐리티를 이 책을 통해 공부하고 정리해 보려고 합니다. 스프링 시큐리티란? 스프..
저번 프로젝트를 할 때부터 테스트 코드 공부는 꼭 필요하다고 생각했습니다. 제가 만든 API를 검사할 때 인텔리제이를 실행시키고 포스트맨으로 API 호출을 하고 받아온 JSON을 확인하는 형식이었습니다. 만든 API를 검사할 때마다 프로젝트를 재실행해야 한다는 것도 귀찮았고 포스트맨에 URL을 치는 것도 여러 번 치니 너무 귀찮았습니다. 그래서 테스트 코드 공부는 꼭 필요하다고 생각했습니다. https://product.kyobobook.co.kr/detail/S000201766024 스프링 부트 3 백엔드 개발자 되기: 자바 편 | 신선영 - 교보문고 스프링 부트 3 백엔드 개발자 되기: 자바 편 | ★ 자바 백엔드 개발자가 되고 싶다면★ 자바 언어 입문 그다음에 꼭 보세요실력을 갖춘 개발자로 성장하려..
저번에 방학 동안 프로젝트를 했을 때 github action과 CodeDeploy를 사용하여 CI/CD를 구축했었습니다. 그때는 AWS를 사용해서 AWS에 제일 최적화한 것이 CodeDeploy이기 때문에 codeDeploy를 선택했었습니다. 이번에 혼자 해보는 프로젝트에서는 docker를 사용해 보려고 합니다. Docker란? Docker는 컨테이너화된 애플리케이션을 만들고 실행하기 위한 오픈 소스 플랫폼입니다. 컨테이너는 애플리케이션과 해당 애플리케이션을 실행하는 데 필요한 모든 종속성(라이브러리, 환경 설정 등)을 포함하는 완전한 실행 환경입니다. Docker를 사용하면 애플리케이션을 컨테이너로 패키징 할 수 있으며, 이 컨테이너는 호스트 시스템에서 독립적으로 실행될 수 있습니다. 컨테이너는 가볍..
데이터베이스를 자신이 원하는 대로 잘 짜더라도 테이블에 중복된 값이나 효율적이지 않은 내용들이 포함될 수 있다. 그런 것을 처리하고자 정규화라는 과정이 중요하다. 실무에서는 3NF 까지를 많이 쓴다고 한다. 이 이후부터는 학술적인 내용이다. 데이터베이스 정규화는 왜 해야 할까? 데이터 중복 최소화 : 데이터 중복은 데이터베이스 크기를 증가시키고, 데이터의 일관성과 무결성을 저해할 수 있습니다. 정규화를 통해 데이터 중복을 최소화하면 데이터베이스 용량을 줄이고, 데이터 검색과 처리 속도를 높일 수 있습니다. 데이터 일관성 유지 : 데이터 일관성은 데이터베이스의 중요한 요소 중 하나입니다. 정규화를 통해 데이터를 분리하면 각각의 테이블에서 데이터가 일관되게 관리되므로 데이터 일관성을 보장할 수 있습니다. 데..
전 글로 Github Action으로 자동배포를 성공했다. 하지만 문제점이 하나 존재할 때, 이 deploy.yml을 사용하면 지금 현재 모든 파일을 EC2에 올려버린다. 그러면 submodule로 만든 보안을 유지해야 하는 정보들 조차 EC2에 올라가 버린다. 이러면 안 되기 때문에 다른 방법을 찾아봤다. 목표 목표는 EC2에는 appspec.yml과 .jar파일, start.sh, stop.sh 4개만 올릴 것 이다. CodeDeploy의 행동 CodeDeploy는 Zip파일을 받는다. jar 파일은 받지 않는다. EC2에 올리기전 자동으로 zip파일을 압축 해제하고 appspec.yml을 실행한다. 이제 appspec.yml의 코드대로 코드가 수행된다. 흐름 이해 github reposiotry에 ..
CI & CD 소개 코드 버전 관리를 하는 VCS 시스템(Git, SVN 등)에 PUSH가 되면 자동으로 테스트와 빌드가 수행되어 안정적인 배포 파일을 만드는 과정을 CI(Continuous Integration - 지속적 통합)이라고 하며, 이 빌드 결과를 자동으로 운영 서버에 무중단 배포까지 진행되는 과정을 CD(Continuous Deployment - 지속적인 배포) 라고 한다. CI 도구들 1. Jenkins Jenkins는 정말 많이 사용한다. EC2에 Jenkins를 설치해야 한다. 그리고 과금이 있다. 그러므로 Pass 2. Travis CI 지금 내가 읽고 있는 책도 Travis CI로 CI/CD를 구현하셨다. Travis를 사용해도 되지만 구글링을 해본 결과 속도가 굉장히 느리다고 한다..