부트캠프 92

사이드 프로젝트 with React 21. 시퀀스 다이어그램

들은 강의 Part 3. 프로젝트 설계하기 03. [이론] 시스템 설계 (2) - Sequence diagram 시퀀스 다이어그램이란? 객체 간의 상호 작용을 시간 순으로 시각화한 다이어그램 시스템의 구조에 초점을 맞춘 것이 아니라 시스템이 어떤 순서로 누구와 상호작용하는지에 포커싱된 behaviour diagram 왜 사용하나요??? 코드를 보고 시스템의 흐름을 파악하기에는 매우 오랜 시간이 걸리고 어렵기 때문에 시스템이 어떤 순서로 받은 요청을 처리하는지, 어떤 시스템과 소통을 하는지 쉽게 이해하기 위해 언제 사용하나요??? 요구사항이 수집되고, 각 시스템 혹은 객체 간의 메시징을 정의하는 설계 단계에서 요청을 처리하기 위해 여러 시스템/외부 서비스 간의 상호 작용이 여러 차례 일어날 때 요청을 처리..

사이드 프로젝트 with React 20. 아키텍처 다이어그램

아키텍처 다이어그램(Architecture Diagram) 시스템의 전체 구조. 시스템 간의 상호 작용 및 의존성을 high-level에서 가시화한 다이어그램 각 시스템이 어떻게 동작하는지, 어떤 데이터를 다루는지 등의 구체적인 내용은 생략하고 전체적인 맥락에서 기술. 왜 사용합니까?? 시스템이 어떤 순서로 요청을 처리하는지, 어떤 시스템과 소통하는지 쉽게 이해하기 위해 코드만을 보고 시스템의 흐름을 파악하기에는 오랜 시간이 걸리고, 효율적이지 않아서 소프트웨어의 큰 구조/그림을 한 눈에 파악하기 위해 언제 사용합니까?? 요구사항이 수집된 후, 초기 설계 시 새로운 팀원이 시스템 구조를 파악해야 할 때 추가 요구사항이 수집되어, 시스템을 변경해야 할 때 ** 소프트웨어의 규모가 크면 클수록 설계도의 중요..

사이드 프로젝트 with React 19. 시스템 설계

시스템 설계란? 시스템 설계 시스템의 요구사항을 충족시키기 위해 필요한 아키텍처, 인터페이스 및 데이터를 정의하는 과정 소프트웨어를 구성하는 요소들(a.k.a 컴포넌트) 간의 관계와 동작 메커니즘을 표현하기 위한 구조 시스템 설계가 왜 필요한가? 설계를 후순위로 두면 시스템을 개발하는 비용이 오히려 더 많이 들고, 일부 또는 전체 시스템에 변경을 가하는 일이 현실적으로 불가능해진다. - 책 'Clean Architecture'에서 설계도 없이 지어진 건물은 없다. 설계도 없이 지은 건물은 안전할까? 개발이 진행된 이후에는 이미 개발된 전체 시스템의 구조를 수정하기 어렵기 때문에 미리 설계해야 한다. 설계 과정이 있어야 확장성, 보안 등 시스템에 요구되는 다양한 요구사항을 잘 충족시킬 수 있다. 설계의 유..

[백엔드 인증/보안] OAuth

OAuth란? 우리가 웹이나 앱에서 흔히 볼 수 있는 소셜 로그인 인증 방식은 OAuth 2.0라는 기술을 바탕으로 구현된다. 직접 작성한 서버에서 인증 처리를 해주는 것과는 달리, OAuth는 인증을 중개해주는 메커니즘이다. 이미 사용자 정보를 가지고 있는 웹 서비스(Naver, Kakao, Google 등)에서 사용자의 인증을 대신해주고, 접근 권한에 대한 토큰을 발급한 후 이를 이용해 내 서버에서 인증을 할 수 있도록 해준다. 유저 입장에서 각각의 서비스별 ID와 Password를 다 기억한다는 것은 굉장히 힘들고 귀찮은 일이다. OAuth를 활용한다면 자주 사용하고 중요한 서비스들의 ID와 Password만 기억해놓고 해당 서비스들을 통해 외부 서비스에 로그인 할 수 있다. 뿐만 아니라 OAuth..

부트캠프/TIL 2023.03.09

[백엔드 인증/보안] 해싱, 토큰 Token, JWT

해싱 (Hashing) 가장 많이 쓰이는 암호화 방식 중 하나. 해싱은 암호화만 가능하다. (복호화 불가능) 해싱은 해시 함수(Hash Function)을 사용하여 암호화를 진행한다. 해시 함수는 다음과 같은 특징을 갖고 있다. 항상 같은 길이의 문자열을 리턴한다. 서로 다른 문자열에 동일한 해시 함수를 사용하면 반드시 다른 결과값이 나온다. 동일한 문자열에 동일한 해시 함수를 사용하면 항상 같은 결과값이 나온다. 레인보우 테이블 레인보우 테이블은 해시 함수를 사용하여 만들어낼 수 있는 값들을 대량으로 저장한 테이블(표)이다. 해시 함수는 역함수를 가지지 않는다. 즉 복호화가 불가능하다. 그러므로, 차라리 가능한 모든 경우의 수를 다 써놓고 거기서 찾아내는 방법을 고안해낸 것이다. 그런데 공격자 입장에서..

사이드 프로젝트 with React 18. AWS

AWS Amplify 풀 스택 개발 - 웹 및 모바일 앱 - AWS Amplify 실시간 및 오프라인 기능이 포함된 iOS, Android, Flutter, 웹 또는 React Native 앱용 크로스 플랫폼 백엔드를 클릭 몇 번으로 생성합니다. aws.amazon.com ASW Amplify는 프론트엔드 웹 및 모바일 개발자가 다양한 AWS 서비스를 활용하는 유연성을 바탕으로 AWS에 풀 스택 애플리케이션을 손쉽게 구축하고 shipping 및 호스팅할 수 있도록 지원하는 솔루션이다. 클라우드 전문 지식이 필요하지 않다. Amazon DynamoDB NoSQL 데이터베이스 | 데이터 관리 | Amazon Web Services 닫기 이 다이어그램은 Amazon DynamoDB의 핵심 기능과 기타 AWS ..

[맥 Mac] 사용 중인 포트 강제 종료(localhost port)

문제 서버를 실행시키는데 자꾸 이런 오류가 발생했다. 위로 쭉 올라가보니 이미 사용중인 address라고 나왔다. 그럼 꺼야지. 근데 어떻게 끄지? 해결 방법 터미널을 켠다. lsof -i :포트번호 입력한다. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME node 91431 hajongon 22u IPv6 0x8337a68d2223cdaa9 0t0 TCP *:terabase (LISTEN) 다른 건 볼 필요 없고 PID만 있으면 된다. kill -9 PID 즉 kill -9 91431 이렇게 입력하면 서버가 다시 잘 열리는 것을 확인할 수 있다. 새로운 의문 kill -9 91431 여기서 왜 -9 일까? "kill -9 PID" 명령은 프로세스를 강제 종료..

사이드 프로젝트 with React 17. 중간 정리

만들어 볼 서비스: 더치페이 서비스 서비스 요구사항 시스템에 대한 사용자의 요구와 기능 프로젝트 초기 단계. 협업 및 유지보수 등 모든 측면에서 기초가 되는 단계 기능적 요구 사항 (Functional requirements) 비기능적 요구 사항 (Non-functional requirements) -> 소프트웨어 품질을 높이기 위한 요구사항 요구사항 작성법 1. User Story에서 시작 형식: 나는 {Role}로서, {Benefit}을 위해 {Goal}을 이루고 싶다. 2. 서비스 요구사항 정의 User Story를 만족시키기 위해 시스템에서 어떤 것들을 구현해야 할지, 기능적 요구사항(Functional requirements)과 비기능적 요구사항(Non-functional requirements..

[Backend 인증/보안] Cookie & Session. 쿠키와 세션

Cookie Cookie란? HTTP 프로토콜의 무상태성을 보완해주는 도구. 원래는 보안 목적으로 만들어진 것이 아니다. - 10일간 보지 않기 - 광고 서비스(쿠키를 기반으로 추천 광고를 띄움) 등등 HTTP 헤더에 실어서 보내는 것이 기본적인 방법임 -> 이것도 찾아보자 - 서버가 웹 브라우저에 정보를 저장하고 불러올 수 있는 수단 - 해당 도메인에 쿠키가 존재하면, 웹 브라우저는 도메인에게 http 요청 시 쿠키를 함께 전달 Cookie는 사용자 선호, 테마, 로그인 유지 등 장시간 보존해야 하는 정보 저장에 적합 회사가 필요로 하는 마케팅 정보를 수집하는 데에도 쓰인다. Cookie Options - Domain: 서버와 요청의 도메인이 일치하는 경우 쿠키 전송 - Path: 서버와 요청의 세부 ..

부트캠프/TIL 2023.03.07

사이드 프로젝트 with React 16. 릴리즈 일정 계산하기

릴리즈 날짜를 계산하기 위해 필요한 것들 이상과 현실 이상 ✅ UI 디자인 ✅ 시스템 설계도 ✅ 투입될 인원과 프로젝트에 쏟을 수 있는 시간(팀원 별로 투자할 수 있는 시간이 다르다.) 현실 ✅ 아직 완벽하지 않지만 1차적으로 무엇을 해야 할지 파악이 끝난 프로젝트 ✅ 직감 or 예측 (전략적 배포라면 날짜가 박혀 있는 경우도 있음) 실무에서는 구체적인 설계가 완벽하게 끝날 때까지 기다려주지 않는다. 정석대로라면 설계를 끝내고 뭘 할지 알아야 날짜를 확정할 수 있겠지만 모든 것을 명확히 한 후에 날짜를 정하려면 굉장히 많은 시간이 든다. 비즈니스를 하는 입장에서는 타이밍이 굉장히 중요하다. 시즌을 노릴 수도 있고 투자를 받은 경우일 수도 있다. 아마존의 경우 개발자들 위로 개발 매니저들이 있어서 일의 양..