본문 바로가기

BackEnd : Spring

(36)
[CI/CD] React.js + Spring Boot 웹 서비스 Docker, Github Action으로 EC2에 자동 배포하기 - 1. Nginx 이번 시간에는 Docker와 Github Action을 사용하여 React.js와 Spring Boot 웹 서비스를 CI/CD로 자동 배포하는 파이프라인을 다뤄보도록 하겠습니다.각 단계에서 발생한 트러블슈팅 내용들을 보다 상세히 작성하기 위해 몇 개의 글로 나누어 업로드할 예정입니다!배포 전략 선택 배경이전 프로젝트에서는 AWS S3, Codedeploy 까지 이용한 CI/CD 배포 파이프라인을 구축했었습니다.https://nymagicshop16.tistory.com/112 [AWS] SpringBoot 프로젝트 AWS CodeDeploy + S3 + Github Actions를 이용하여 CI/CD 구축, Docker + EC2 + RDS 로 배포프로젝트 아키텍처1. EC2 서버 만들기참고한 글 : h..
[Spring] 객체 지향 설계와 스프링 Spring Boot스프링을 편리하게 사용할 수 있도록 지원단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨손쉬운 빌드 구성을 위한 starter 종속성 제공스프링과 3rd path 라이브러리 자동 구성메트릭, 상태 확인, 외부 구성 같은 프로덕션 준비 기능 제공관례에 의한 간결한 설정스프링의 진짜 핵심스프링은 자바 언어 기반의 프레임워크자바 언어의 가장 큰 특징 : 객체 지향 언어스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크좋은 객체 지향 프로그램이란?객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 ..
[SpringBoot] JPA @ColumnDefault, @Builder.Default @DynamicInsert@Getter@Entity@Table(name="MemoryStar")@Builder@NoArgsConstructor@AllArgsConstructor@EntityListeners(AuditingEntityListener.class)public class MemoryStar { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long memory_id; @OneToOne @JoinColumn(name = "star_id", nullable = true) @OnDelete(action = OnDeleteAction.SET_NULL) private StarList starList..
[Spring Boot] 영속성 컨텍스트 / 엔티티 값 update 하기 유저 탈퇴 기능을 개발하면서 유저 탈퇴 시 unactivated로 처리하기 위해 엔티티 값을 update하는 로직을 구현하였다.기존 코드save() 를 통해 기존의 엔티티 값 수정@PostMapping("/quit") public void quit() { Optional userWithAuth = userService.getUserWithAuthorities(); if (userWithAuth.isPresent()) { User user = userWithAuth.get(); user.setActivated(false); userRepository.save(user); } }엔티티를 수정한 후, s..
[SpringBoot] JpaRepository @Modifying, @Transactional public interface RecCampListRepository extends JpaRepository { @Query("SELECT rc FROM RecCampList rc WHERE rc.user.id = :userId") List getByUser(@Param("userId") String userId); @Query("SELECT rc FROM RecCampList rc WHERE rc.doNm = :doNm and rc.user.id = :userId") List getByDoNmAndUser(@Param("userId") String userId, @Param("doNm") String doNm); @Modifying @Transactional @Qu..
[AWS] SpringBoot 프로젝트 AWS CodeDeploy + S3 + Github Actions를 이용하여 CI/CD 구축, Docker + EC2 + RDS 로 배포하기 프로젝트 아키텍처1. EC2 서버 만들기참고한 글 : https://velog.io/@jonghyun3668/SpringBoot-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-EC2-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0 SpringBoot 프로젝트 EC2 배포하기깃헙에 있는 프로젝트를 AWS EC2에 git clone을 통해 내려받아 jar 파일 빌드를 해보겠습니다.(EC2 인스턴스는 우분투로 진행합니다. 또한 따로 배포 시스템을 구축하지 않고 수동으로 배포하는것만velog.io 2. RDS 데이터베이스 생성Docker로 스프링부트 jar 파일과 mariadb를 이미지화 하여 EC2 서버에 배포 하려고 하였으나,java.lang.NullPointerExce..
[AWS] SpringBoot + AWS S3에 이미지 업로드하기 AWS S3 버킷 생성내 pc로 접근할 것이기 때문에 모든 퍼블릭 액세스 차단 해제나머지 설정은 건드리지 않음버킷이 생성되었다유저의 프로필 사진들을 저장할 profile_imgs 폴더를 만들어준다IAM 만들기사용자 생성 완료IAM accessKey, secretKey 얻기IAM - 사용자 - 보안 자격 증명액세스 키 만들기버킷 접근 권한 설정코드를 다 알맞게 작성했는데 이미지가 안불러와져서 알아보니 버킷에 getobject가 가능하도록 권한을 설정해줘야 했다!나의 버킷에서 권한 정책을 이렇게 수정하였다.{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "All..
[TalentTree 프로젝트] HttpSession : 로그인된 사용자 정보 가져오기 HttpSession을 사용하게 된 배경원래 스프링 프로젝트에서 로그인, 로그아웃에서 사용자 정보를 관리하는 것을 Spring Security를 쓰곤 한다.이 프로젝트 개발 기간이 짧기도 했고, 최초 로그인 시 회원가입으로 구현하기로 하여 세션에 로그인된 사용자 정보를 담기로 했다.LoginController로그인과 관련된 로직을 처리하는 Controller이다.@Controller@RequiredArgsConstructorpublic class LoginController { private static String UPLOAD_DIR = System.getProperty("user.dir") + "/src/main/resources/static/bootstrap/assets/uploads"; ..