Project/TIL, WIL
TIL(37) 21-11-09 : Object Oriented Programming
💫 Facts ✅ 객체지향에 대해 나만의 언어로 정립하기 ✅ 쿠키와 세션 이해 ✅ 스프링 시큐리티를 통해 로그인, 회원가입 기능 구현 💫 Findings 🧩 객체지향 (1) 클래스, 인스턴스, 메소드 ✏️ 클래스 : 표현하고자 하는 대상의 공통 속성을 한 군데에 정의해 놓은 것이다. 즉, 객체의 속성을 정의해 놓은 것을 말한다. ✏️ 인스턴스 : 어떠한 클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 한다. ✏️ 메소드 : 어떤 작업을 수행하는 코드를 하나로 묶어 놓은 것을 말한다. (2) 생성자 ✏️ 생성자 : 인스턴스가 생성될 때 사용되는 '인스턴스 초기화 메소드'다. 생성자를 이용해서 인스턴스가 생성될 때 수행할 동작을 코드로 짤 수 있다. 대표적으로 인스턴스 변수를 초기화 하는 용도로 사용한..
TIL(36) 21-11-08 : Spring DI / IoC
Facts ✅ 스프링의 중요한 내부 기능인 DI, loC에 대해 이해 ✅ 스프링 프레임워크에 대해 이해 Findings 🧩 DI, loC DI DI란 클래스 사이에 존재하는 의존관계를 주입해주는 것을 말한다. Spring에서 관리하는 객체를 Bean이라고 부르는데, 이를 Spring Framework가 직접 생성해서 필요한 곳에 주입해준다. 🤔 의존관계? 어떤 클래스가 다른 클래스에 접근할 수 있는 경로를 가지거나 다른 클래스의 객체의 메소드를 호출하는 경우 두 클래스 사이에 의존관계가 있다고 말합니다. IoC IoC는 프로그램의 제어의 흐름을 관리하는 주체가 개발자에서 프레임워크로 역전되는 것을 말한다. Spring에서는 Spring Container에서 객체를 생성하고 관리한다. 🤔 DI / IoC가..
TIL(35) 21-11-05 : Spring은 고마운 친구
Facts ✅ All In One Servlet의 문제점, All In One Controller의 문제점 파악을 통해, Spring Framework의 편리함 이해 Findings MVC 패턴 MVC 패턴은 애플리케이션을 Model, View, Controller 이 3가지 역할로 구분한 개발 방법론이다. Model은 데이터와 행동을 갖는 객체로서, 비즈니스 로직을 수행한다. View는 데이터의 시각화로, 모델이 처리한 데이터를 받아서 사용한다. Controller는 사용자의 요청을 해석하여 처리하고 결과를 반환한다. Model과 View의 사이를 연결해주며, 데이터의 흐름을 제어한다. 🤔 MVC 패턴을 사용하는 이유는 무엇일까? MVC 패턴을 사용하지 않는 경우에는 로직 코드와 출력 코드가 한 페이지..
TIL(34) 21-11-04 : JPA를 이용하여 CRUD 기능 구현
Facts ✅ JPA를 이용하여 데이터베이스 CRUD 기능을 구현 ✅ 클라이언트 화면 추가 Findings ✏️ Lombok Lombok : 자바 프로젝트를 진행하는데 거의 필수적으로 필요한 메소드/생성자 등을 자동생성해줌으로써 코드를 절약할 수 있도록 도와주는 라이브러리 @Getter : object의 Getter 메소드를 자동으로 생성 @NoArgsConstructor : parameter가 없는 기본 생성자를 자동으로 생성 @RequiredArgsConstructor : final이나 @NoNull인 필드값만 paramter로 받는 생성자를 자동으로 생성 ✏️ DTO 데이터(ex. 객체)를 주고 받을 때, Entity를 사용하는 것이 아니라, 새로운 클래스를 사용하기 위해, DTO가 나왔다. 🤔 W..
TIL(33) 21-11-03 : Spring 시작
Facts ✅ TDP Service를 Sam famework를 사용하여 Serverless로 배포 ✅ Spring 프레임워크의 기본 레이어(Repository, Service, Controller) 이해 ✅ JPA 이해 Findings ✏️ 기본 레이어 스프링에서 서버를 개발할 때, 처리 과정을 3개로 분리해서 개발한다. 분리하는 이유는, 코드가 변경이 되어도 서로 영향을 주지 않게 하여, 확장성을 높이기 위함이다. 역할별로 Controller, Service, Repository로 분리한다. (1) Controller 클라이언트의 요청을 받음 요청에 대한 처리는 서비스에게 전담 클라이언트에게 응답 (2) Service 서버에서 사용자의 요구사항 처리하는 핵심 기능 DB 정보가 필요할 때는 Reposit..
TIL(32) 21-11-02 : Authentication 수정 완료
Facts ✅ "TDP 프로젝트" Authentication 수정하기 (Token 저장 위치를 Cookie에서 Local Storage로 저장) ✅ Authorization : Token을 Storage에 저장하는 이유 포스팅 Findings 우리는 Token을 Local Storage에 저장하기로 했다. Why? 로그인 유지 기능을 위해서다. 🤔 Local Storage는 만료기한 없이 데이터를 저장하는데 괜찮은가 의문이 들 수 있다. 💡 Token에 유효기간을 넣고, 일정시간이 지나면, 인가하지 못함으로 Local Storage에 저장해도 상관없다고 결론을 내렸다. 그리고 만료된 토큰의 경우, 해당 토큰을 삭제 처리를 해주면 된다고 생각이 들었다. 하지만, Token이라는 친구는 탈취당하면, 해당 T..
TIL(31) 21-11-01 : SAM 프레임워크로 서버리스 배포하기
Facts ✅ AWS 에서 제공하는 SAM 프레임워크에 대해서 이해하기 ✅ SAM 프레임워크를 이용해 서버리스 배포하기 ✅ 서버사이드 렌더링 제거하기 Findings ✏️ SAM을 이용한 Lambda 관리하기 SAM : 서버리스 애플리케이션을 구축할 때 사용할 수 있는 오픈 소스 프레임워크 👉🏻 간단한 YAML 템플릿을 사용하여 애플리케이션(Lambda 함수, API 엔드포인트, DynamoDB 테이블 및 기타 리소스)을 설명하는 데 사용할 수 있는 단축 구문을 제공한다. Lambda를 좀 더 효율적으로 관리할 수 있게 해준다. Lambda를 통해 서버리스 백엔드를 구축할 때, 설정할 것들이 너무 많았다. 하지만, SAM을 통해서는, 코드를 배포함으로, 인프라를 쉽게 구성할 수 있게 되었다. 이것을 Ia..
TIL(30) 21-10-29 : 서버리스 백엔드로 게시판 API 만들기
💫 Facts ✅ Lambda와 (+VPC + NAT + SecretsManager + Proxy + S3 +RDS) 연동해서 인프라 구성하기 NAT 게이트웨이를 이용해 외부 인터넷 연결 ✅ Lambda를 이용해 실제 API 만들기 ✅ API를 사용한 게시판 만들기 💫 Findings ✔️ Lambda와 (+VPC + NAT + SecretsManager + Proxy + S3 +RDS) 연동 Lambda 함수에서 RDS 연결은 Dateproxy를 사용하도록 권장해서 Lambda에 VPC 추가를 한다. Lambda 함수에 VPC를 연동하면 외부통신이 되지 않는다. 외부통신을 하기 위해서 지정한 서브넷에 NAT 게이트웨이를 설정한다. 🤔 인프라 구성할 때, VPC와 NAT까지 설정까지하는 이유는 무엇일까?..
TIL(29) 21-10-28 : 서버리스 백엔드
💫 Facts ✅ EC2로 구성된 기존 아키텍처의 문제점 이해 ✅ 서버리스에 대한 개념 이해 ✅ Lambda와 (+ VPC + SecretsManager + RDS) 연동해서 인프라 구성 💫 Findings ✔️ Cloud란 물리적인 컴퓨터를 사용하지 않아도, 을 통해 를 사용하는 것 ✔️ EC2로 구성된 기존 아키텍처의 문제점 EC2 만으로 백엔드 인프라를 구성해도 관계가 없지만 좀 더 유연한 인프라를 구성하는 데는 분명히 한계가 있다. 왜냐하면, EC2 인스턴스로 백엔드를 구성하면 EC2를 직접 관리해 줘야 한다. 만약 운영하고 있는 서비스에 갑자기 트래픽이 몰린다면? 🤯 EC2를 추가해서 부하를 분산 시켜 줘야한다. 운영 중인 서비스에서는 대응이 힘들 것이다. 😭 확장의 유연성을 위해 어떻게 하면 ..
TIL(28) 21-10-27 : 서버리스 프론트엔드
Facts ✅ NGINX를 이용해 프론트 페이지 관리 ✅ HTTPS를 사용하기 위해 인증서 설치 ✅ S3 정적웹호스팅 기능을 사용하여 서버리스로 프론트엔드 페이지를 관리 ✅ CloudFront와 Certification Manager를 사용하여 HTTPS를 인스턴스 없이 생성 ✅ WAF를 이용하여 좀 더 보안을 강화 ✅ Route53을 이용하여 DNS를 이전