Project/TIL, WIL
TIL(47) 21-12-07: ElasticBeanstalk으로 백엔드 아키텍처 구성하고 GithubAction으로 프로젝트 배포
Facts ✅ 백엔드 인프라 Elasticbeanstalk를 사용하여, ELB + AutoScaling + EC2 구축 ✅ Github Action으로 프로젝트 배포 Feelings EB Elasticbeanstalk로 EC2와 ELB와 환경변수 값을 한번에 관리해 주었다. 따로 관리했을 때는 설정값도 많고 어려웠는데, 통합해서 관리함으로써, 간단한 옵션만 조절하고, 어플리케이션만 배포하면 되어서 매우 편리했다. GithubAction으로 자동 배포 GithubAction으로 Source를 Push 하자마자 자동으로 서버 배포를 반영할 수 있게 해주었다. 기존에는 서버에 배포하려면 파일을 고칠 때마다, 서버를 멈춰주고 파일을 수정해서 서버에 올려주고 다시 서버 돌리는 작업을 해서 번거로웠다. 그런데, G..
TIL(46) 21-12-06: S3와 CloudFront로 프론트엔드 인프라 구성하기
Facts ✅ 프론트엔드 인프라 s3 + cloudfront로 구성 ✅ SSL 인증서 설정 Using Certificate Manager ✅ 웹방화벽 Using AWS WAF
TIL(45) 21-12-03 : Spring에서 게시글 Pagination 처리하기
Facts 오늘은 게시글 전체와, 게시글 검색결과를 Pagination처리를 해주었다. Findings Pagination 처리 🤔 왜 Pagination처리를 해줄까? 만약, 검색을 할 때, 검색 결과 값이 수천만 개의 문서를 Json 형식으로 받는다면? 메모리가 감당이 되지 않을 것이다. 그러므로, Pagination 처리는 필수적이다. Youtube도 다 Pagination처리를 해서 제공한다. 무한 스크롤로 보이겠지만, 어느 정도 스크롤을 내리면, 로딩 후에 데이터를 제공한다. 이것도 Pagination 처리를 해줘서 제공해주는 것이다. TilRepository pageable이라는 라이브러리를 사용하면, Page object 형식의 게시글들을 가져올 수 있다. public interface Ti..
TIL(44) 21-11-30 : S3와 CloudFront를 이용한 사진 업로드 구현하기
Facts ✅ mypage 이미지 S3로 업로드 하기 [Flask → Spring] Findings Javascript에서 이미지를 입력받고 요청을 전송하고 Spring Boot에서 S3에 이미지를 저장하여 업로드 하는 코드를 작성했다. Spring Boot에서 이미지 업로드 요청 처리를 구현할 때, 여러가지 설정과 과정이 필요했다. 1) 먼저 프론트단에서 byte형식의 파일을 보내주기 위해, Multipart/form-data 형식으로 파일을 보내준다. 2) Controller에서 MultipartFile 객체를 받는다. 3) S3 이미지 업로드 하기 위해서는 다음과 같이 구현해 주었다. AWS관련 속성을 적용해주기 위해, yml 파일을 설정해주고, 파일 처리 관련 Service를 여러개 만들어주었다...
TIL(43) 21-11-28 : Spring Secruity 사용하여, 인증 인가 구현하기
Facts ✅ "Spring Security 사용하여, 인증 인가 구현한 부분"의 전체 구조 이해하기 ✅ 모든 페이지에 접근할 경우 로그인해야 접속 가능하게 함 (로그인 페이지 제외하고 모든 페이지) ✅ 로그인 페이지에 접속할 때, 토큰이 있으면 home.html 가게 처리 ✅ get user 처리 (create.html, mytil_page.html, my_page.html user 데이터 뿌려주기) Findings 스프링 시큐리티를 이용한 로그인 처리 Spring Security를 사용하면, 인증 / 인가가 성공할 때에만, Controller에게 UserDetails(회원 정보)를 전달해준다. 로그인 처리 과정 1. 유저가 로그인을 시도하여, 서버에 http 요청이 들어온다. 2. Authentica..
TIL(42) 11/22 - 11/27 : TDP 사이트 Flask 👉🏻 Spring
Facts ✅ JWT 로그인 처리 구현 ✅ index.html [Flask → Spring으로 변환] ✅ home.html [Flask → Spring으로 변환] ✅ create.html [Flask → Spring으로 변환] ✅ my_page.html [Flask → Spring으로 변환] ✅ mytil_page.html [Flask → Spring으로 변환] ✅ til_board.html [Flask → Spring으로 변환] Findings & Feelings Flask → Spring으로 변환하는 작업을 진행하였다. 처음에는 Spring이 익숙하지 않아 어렵게만 느껴졌다. Controller, Service, Repository를 분리를 어떻게 해야하지 고민도 많이 들었다. 1주일동안 부딪혀보니,..
TIL(41) 21-11-20 : 조회수, comment 기능 구현 (Flask)
Facts ✅ 메모장 사이트 조회수 기능 구현 [flask] ✅ 메모장 사이트 Comment 기능 구현 [flask] 조회수 기능 구현 게시글을 클릭할 때마다, 서버에서 게시글 컬럼의 read_count 필드값을 증가시키게 구현했다. function readArticle(idx) { $.ajax({ type: "PUT", url: `/article/${idx}`, data: {}, success: function (response) { console.log(response['article']) let title = response['article']['title'] let content = response['article']['content'] $('#modal-title').html(title); $(..
TIL(40) 21-11-17 : @Transactional / 스프링 Controller가 Client로 부터 파라미터를 받는 방법 / Lambda와 Stream
Facts ✅ 메모장 사이트 CRUD 기능 구현 Findings ✏️ @Transactional 스프링에서 트랜잭션 처리를 하려면, 트랜잭션이 필요한 클래스 혹은 메서드에 @Transactional 어노테이션을 달아주면 된다. @Transactional이 붙은 메서드는 메서드가 포함하고 있는 작업 중에 하나라도 실패할 경우 전체 작업을 취소한다. 클래스, 메서드 모두에 @Transactional 어노테이션을 붙이면 메서드 레벨의 @Transactional 선언이 우선 적용된다. // update @Transactional public Til updateTil(Long id, TilRequestDto tilRequestDto) { Til til = tilRepository.findById(id).orEls..
TIL(39) 21-11-15 : 도커를 사용해서 컨테이너를 구성해보기
🧭 도커 컨테이너 구성 및 활용 1. 도커, 컨테이너에 대한 이해 2. MariaDB를 컨테이너로 구성 및 Python Flask 연동 3. docker compose를 통해 여러개의 컨테이너를 효과적으로 관리 1️⃣ 도커, 컨테이너에 대한 이해 ✏️ Container (1) Definition ✔️ Container : 하나의 컴퓨팅에서 다른 컴퓨팅 환경으로 빠르고 안정적으로 실행되도록 코드와 모든 dependencies를 패키징하는 소프트웨어 표준 단위이다. EX) 코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정을 패키징한다. Container vs VM 컨테이너 기술을 이해하려면, VM과 비교해보면 쉽다. 컨테이너 = 각각의 프로세스들을 격리시키는 기술 (가상머신 달리 격리된 프로세스들을 ..
TIL(38) 21-11-10 : Spring Security + OAuth2
💫 Facts ✅ Spring CRUD API, Auth API(인증 및 인가)의 데이터 흐름 파악 ✅ 토큰 이해 💫 Findings 🧩 Token 토큰 기반 인증 : 인증받은 사용자들에게 토큰을 발급하고, 서버에 요청을 할 때 헤더에 토큰을 함께 보내 유효성을 검사하는 방식 👉🏻 세션과 달리 토큰 기반 인증방식은 다양한 도메인에 대응할 수 있고, 서버의 메모리 부담을 줄일 수 있다. 또한, 서버가 여러 대를 두고 사이트를 운영할 때, 세션 유지가 제대로 안될 수 있지만, 토큰 인가 방식으로는 서버에서 토큰을 발급하고 보내주고 이를 서버에 저장하지 않기에 서버가 여러 대여도 상관없다. 🤯 하지만, 치명적인 단점이 있다. 이미 발급된 토큰에 대해서는 돌이킬 수 없다. 세션/쿠키의 경우 만일 쿠키가 악의적으..