전체 글

프로젝트/E-Commerce

[5] AccountService (3) 구현

1. Controller @PostMapping("/login") public ApiResponse login(@Valid @RequestBody LoginRequest request) { //login service 구현( JWT ) return ApiResponse.success(accountManager.login(request.toCommand())); } @PostMapping("/signup") public ApiResponse signup(@Valid @RequestBody SignupRequest request) { //signup service 구현 return ApiResponse.success(accountManager.signup(request.toCommand())); } @Pos..

프로젝트/E-Commerce

[4] AccountService (2) SpringSecurity

Spring Security Spring security를 사용하여 인증/인가 시스템을 구현하였습니다. Spring Sercurity는 Dispatcher Servlet으로 요청이 도달하기 전 Filter 구간에서 동작합니다. ❓Spring Security를 사용한 이유 Client에서 보낸 요청에서 Cookie나 Header를 통해 Controller Layer에서 인증/인가를 구현할 수 있습니다. 하지만 요청한 기능에 대한 응답을 하는 Controller Layer에서 인증/인가를 구현하는 것 보다 Filter 단계에서 구현 하는 것이 더 효율적입니다. 또한 Spring Security는 인증/인가에 관한 일련의 행동들을 FilterChain을 Bean으로 등록함으로써 간편하게 구현할 수 있어 Spr..

프로젝트/E-Commerce

[3] AccountService (1) 설계

1. Api 설계 /account/signup : 회원 가입 API /account/login : 로그인 API /account/logout : 로그아웃 API /account/withdraw : 회원 탈퇴 API /account/reissue : AccessToken 재발급 API 2. Api FlowChart 3. 인증/인가 Session vs Token HTTP는 Stateless하기 때문에 매 요청은 Client의 정보를 가지고 있지 않습니다. 사용자가 기능을 하나씩 사용할 때 마다 인증을 해야하는 것은 정말 번거로운 일입니다. Server가 User를 특정하기 위해 사용하기 위해 Session과 Token을 사용합니다. Sesison vs Token Token 방식을 선택하게 된 이유는 인증/인..

프로젝트/E-Commerce

[2] System Architecture

MSA 구조 Monolithc 구조는 프로젝트의 각 서비스들이 하나의 서버에 배포되는 구조입니다. 만약 하나의 서비스에 문제가 생기면 전체 서버에 문제가 생기는 단일 장애 지점이 발생할 수 있습니다. 프로젝트가 상용화되면 각 서비스들은 모두 같은 트래픽을 감당하지 않을 것입니다. 하지만 monolithic은 하나의 서비스만 확장할 수 없는 구조입니다. 그러므로 MSA 구조를 채택하여 확장성을 높일 수 있었습니다. AWS Cloud 서버 배포는 AWS Cloud를 이용하여 사용하였습니다. AWS Cloud를 사용한 이유는 여러 회사에서 사용하는 만큼 안정성을 보장한다고 생각하였습니다. 그리고 네트워크 구성을 위한 많은 서비스를 제공하고 대규모 트래픽을 견디기엔 최적이라고 생각했습니다. ECS Fargate..

프로젝트/E-Commerce

(1) LastOrder Proejct 개요

Commerce 1. 소개 저의 Last-Order Project에 대해서 소개해드리겠습니다. 유통 기한이나 마감이 임박한 상품들을 구매자가 등록하고 주변에 거주하는 서비스 이용자들이 물건을 구매할 수 있도록 중개해주는 프로젝트입니다. 2. Service Prototype 다음은 초기 기능 프로토타입 입니다. - Account - 로그인/회원가입 기능 - 로그아웃/회원탈퇴 기능 - Shop - 상점 추가 - Item - 상품 등록/수정/삭제 - Cart - 장바구니 등록/수정/삭제 - Order - 주문 등록 - Pay - 결제 - Notification - Item 등록 시 제품을 keyword 등록한 유저에게 Notification 3. 프로젝트 목표 대규모 트래픽을 위해 확장성있는 프로젝트로 만든다..

공부/JAVA

[1] JAVA의 특징

1. 장점 ■ 객체지향 언어이다. - 자바는 객체지향 프로그래밍 (Object Oriented Programming)이다. 객체들을 먼저 생성하고, 이것들을 조립, 연결하여 프로그램을 완성하는 프로그래밍 기법이다. - OOP의 4대 특징으로 상속, 추상화, 캡슐화, 다형성이 있다. ■ 운영체제에 독립적이다. - 어떤 OS라도 자바 실행 환경( JRE : JAVA RUNTIME ENVIRONMENT )가 구축되어 있다면 자바를 실행할 수 있다. - JVM 위에서 돌아가기 때문에 CPU나 OS에 종류와 무관하게 동일하게 동작한다. ■ Garbage Collector - C언어나 C++에서는 개발자가 직접 메모리 설정/해제를 하여야 합니다. 자바에서는 JVM이 메모리를재사용할 수 있도록 사용하지 않는 메모리를..

공부/Python

자주쓰는 Python 명령어

string 관련 str.lower() -> string 전체 소문자로 변경 str.upper() -> string 전체 대문자로 변경 str[0].isupper() -> str[0] 대문자 여부 str.replace("python","java") -> python을 java로 변경 index = str.index("n") -> string에서 문자 n의 인덱스 index = str.index("n",index+1) -> 첫번째 n의 인덱스 이후의 다음 n의 인덱스 str.find("java") -> 있으면 1 없으면 -1 리턴 str.count("n") -> string에서 "n"의 갯수 list 관련 list.index(value) -> list에서 value가 있는 index list.append(..

공부/React

2. React 설치 ( VS Code )

1. Node.js 다운로드 https://nodejs.org/ko/download/ 위의 링크로 이동하여 Node.js LTS 버전을 다운로드합니다 자신의 컴퓨터 환경에 맞는 Installer를 다운받으면 됩니다. 다운로드 | Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org 다운로드 후 명령프롬프트(cmd)에서 'node -v', 'npm -v'를 입력하여 설치 및 버전확인을 합니다. 2. 프로젝트 생성 및 실행 (CRA - Create-React-App) 명령 프롬프트에서 프로젝트를 생성하고 싶은 폴더로 이동합니다. 이동 후 npx create-react-app (프로젝트 이름)을 입력..

poujis
사가정 못쟁이