🔍앞서 진행한 배포의 불편한 점 수동 실행되는 Test : 본인이 짠 코드를 확인하기 위해 전체 테스트를 수행해야만 함. 수동 Build : 다른 사람이 작성한 브랜치와 본인이 작성한 브랜치가 합쳐졌을 때(Merge) 이상이 없는지는 Build를 수행해야만 알 수 있고 이를 매번 개발자가 직접 실행해야 함. => 24시간, 365일 운영되는 서비스에서 배포 환경 구축은 필수 과제임. 🤍CI & CD 하나의 프로젝트를 여러 개발자가 함께 진행 시 각자 개발한 코드를 합치는 것이 번거로움. CI, CD : 지속해서 코드가 통합되는 환경을 구축하는 것. 깃허브에 푸시될 때마다 코드를 병합, 더는 수동으로 코드를 통합할 필요가 없어짐. 특히나 중요한 것은 테스팅 자동화. 🤍Travis CI 연동하기 Travix..
🤍스프링부트 프로젝트로 RDS 접근하기 책에서는 MariaDB를 사용 중이지만 나는 연결이 한 번에 안 되는 바람에 MySQL로 만들었다. MySQL에서 스프링부트 프로젝트 실행하려면 몇 가지 작업이 필요하다. 1. 테이블 생성, 2. 프로젝트 설정, EC2 설정 🤍RDS에 테이블 생성 1. 먼저 RDS에 테이블을 생성한다. JPA가 사용될 엔티티 테이블, 스프링 세션이 사용될 테이블 2가지를 생성해야 하는데 JPA가 사용할 테이블은 테스트 코드 수행 시 로그로 생성되는 쿼리를 복사해서 사용하면 된다. 2. 스프링 세션 테이블은 schema-mysql.sql 파일에서 가져오면 된다. 3. 테이블 생성 🤍프로젝트 설정 1. MySQL 드라이버를 build.gradle 에 등록한다. implementatio..
🤍EC2에 프로젝트 Cone 받기 먼저 깃허브에 코드를 받아올 수 있게 깃을 설치하고 git clone으로 프로젝트를 저장할 디렉토리를 생성한다. sudo yum install git //EC2에 깃 설치 git --version //설치 상태 확인 mkdir ~/app && mkdir ~/app/step1 //프로젝트 저장할 디렉토리 생성 깃허브 https 주소를 복사해와서 git clone을 진행한다. git clone 복사한 주소 ll 명령어로 프로젝트 코드 전체 clone 받아졌는지 확인. 코드들이 수행되는지 테스트 해보기 ./gradlew test 이 gradlew test에서 정말....많은 고생을 했다....ㅠㅠㅠㅠㅠㅠ 처음엔 될 것 처럼 희망 고문을 하더니... 상쾌한 Build faile..
🤍RDS 웹 서비스의 백엔드에서 코드 작성만큼 중요한 것이 데이터베이스를 다루는 일임. RDS는 앞서 구축해둔 AWS에서 지원하는 클라우드 기반 관계형 데이터베이스이다. 🤍RDS 인스턴스 생성하기 AWS 검색창에 RDS를 입력한 다음 RDS 대시보드에서 [데이터베이스 생성] 버튼을 클릭한다. MariaDB(이유 : 가격, Amazon Aurora 교체 용이성) / 표준 생성 선택 템플릿은 프리티어(무료)로 선택!! ✅상세 설정 할당된 스토리지 : 20 으로 DB 인스턴스 식별자 지어주고 마스터 사용자 이름&암호 이건 따로 메모해두거나 꼭 기억해야 함! 퍼블릭 엑세스 가능 : 예 조금 기다리면 생성이 완료됨. ✅파라미터 설정 파라미터 그룹 생성 버튼 클릭, 앞에서 생성한 Maria DB와 같은 버전으로 맞..
앞서 진행한 게시판 프로젝트에 이어 본격적으로 서버 배포를 진행해 보도록 한다. 외부에서 본인이 만든 서비스에 접근하기 위해서는 24시간 작동하는 서버가 필수임. => 그중 클라우드가 가장 유리함. AWS는? 첫 가입 시 1년간 대부분 서비스가 무료임. 클라우드에서 기본적으로 지원하는 기능(모니터링, 로그관리, 백업, 복구...)이 많아 개인 및 소규모일 때 개발에 좀더 집중할 수 있음. 많은 기업이 AWS로 이전 중이기 때문에 AWS 사용 경험은 취업, 이직에 도움이 됨. 사용자가 많아 국내 자료와 커뮤니티가 활성화 되어 있음. 🤍AWS 회원가입 이메일주소, 암호, 영문 주소 등등 입력하고 카드도 등록하고~~ 지원 플랜은 기본 플랜(무료) 선택. 가입 완료! 🤍EC2 인스턴스 생성하기 EC2는 AWS에..
지난번에 만든 구글 로그인에 이어 이번에는 네이버 로그인을 추가해 보도록 한다. 1. 네이버 오픈 API 홈페이지로 이동 애플리케이션 - NAVER Developers developers.naver.com 2. 애플리케이션 이름을 입력하고 네이버 아이디로 로그인 선택 3. 서비스 URL 등록.(=구글에서 등록한 리디렉션 URL 같은 역할) 여기까지 마치면 끝! 클라이언트 ID와 비밀번호가 발급된다. 4. application-oauth.properties에 네이버api 관련 키값들을 수동으로 등록한다. 구글과 달리 네이버에서는 스프링 시큐리티를 공식 지원하지 않아 수동으로 입력 필요. user_name_attribute = response : 네이버 회원 조회 시 반환되는 JSON 형태이기 때문에 res..
🔍스프링 시큐리티와 스프링 시큐리티 Oauth2 클라이언트? 많은 서비스에서 구글, 페이스북 등 소셜 로그인 기능을 사용하는 추세. 그 이유는 직접 구현하는 것보다 OAuth를 써서 구현하는 것이 더 간단하기 때문이다. 로그인 시 보안, 비밀번호 변경&찾기 등등 모든 서비스를 소셜 서비스에 맡기고 그외의 개발에 집중할 수 있다. 🤍구글 서비스 등록 1. 구글 서비스 등록 구글 클라우드 플랫폼 으로 이동해서 프로젝트를 만든다. API 및 서비스로 이동해서 사용자 인증 정보를 만든다. 먼저 동의화면을 구성해준 다음 OAuth 클라이언트 ID를 만들어준다. 스프링 부트2 버전의 시큐리티에서는 기본적으로 {도메인}/login/oauth2/code/{소셜서비스코드} 리다이렉트 URL을 지원하고 있다. 사용자가 별..
🤍게시판 글 목록 조회 1. index.mustache UI 변경 {{#posts}} : posts라는 List를 순회하겠다, 자바의 for문과 동일함. {{id}} 등의 {{변수명}} : List에서 뽑아낸 객체의 필드를 사용하겠다. 2. PostsRepository 인터페이스에 쿼리 추가 SpringDataJpa에서 제공하지 않는 메소드는 @Query를 사용하여 작성 가능함, 기본 메소드만으로 해결이 가능하지만 @Query가 훨씬 가독성이 좋다. @Query : 타입 안정성이 보장됨 / 국내 많은 회사(쿠팡, 배민 등 JPA를 적극적으로 사용하는 회사)에서 사용 중 / 래퍼런스가 많음.(많은 회사, 개발자들이 사용하는 만큼 국내 자료가 많음.) @Query("SELECT p FROM Posts p O..