오늘 뭐했냐/개발에 대한 주저리 124

23.08.18 프로세스 (Process)

프로세스는 컴퓨터에서 실행 중인 프로그램의 인스턴스를 말합니다. 프로그램은 디스크에 저장된 실행 가능한 파일이며, 이 프로그램을 실행하면 운영 체제는 새로운 프로세스를 생성하여 해당 프로그램을 실행합니다. 각 프로세스는 독립적인 실행 환경을 가지며, 다른 프로세스와는 분리되어 실행됩니다. 여기서 프로세스의 주요 특징과 관련 정보를 설명하겠습니다. 프로세스의 특징: 독립성: 각 프로세스는 서로 독립된 실행 환경을 갖습니다. 한 프로세스의 문제가 다른 프로세스에 영향을 주지 않습니다. 메모리 공간: 프로세스는 자신만의 가상 메모리 공간을 가집니다. 이로 인해 각 프로세스는 서로의 데이터에 직접 접근할 수 없습니다. 코드, 데이터, 스택: 프로세스는 실행 코드, 데이터, 스택 등 여러 영역을 포함하는 메모리 ..

23.08.17 OAuth

OAuth (Open Authorization)는 사용자가 하나의 서비스 (예를 들어, Google 또는 Facebook)의 자격 증명을 사용하여 다른 서비스에 로그인할 수 있도록 하는 표준 인증 프로토콜. 이는 사용자가 각각의 서비스에 대해 별도의 아이디와 비밀번호를 만들 필요가 없도록 해 준다. 또한, OAuth는 사용자가 특정 서비스에 다른 서비스의 일부 기능에 접근할 수 있게 허가할 수 있는데 예를 들어, 사용자가 트위터 계정에 연결된 앱에게 트윗을 작성하거나 팔로워 목록을 볼 수 있는 권한을 부여할 수 있다. OAuth의 주요 개념 1. Resource Owner: 리소스(데이터, 기능 등)의 소유자, 일반적으로 사용자입니다. 2. Resource Server: 리소스를 호스팅하는 서버, 예를 ..

23.08.16 RDBMS와 No SQL

RDBMS (관계형 DB): 정해진 데이터 스키마에 따라 테이블에 데이터가 저장이 되고, 데이터는 관계를 통해서 분산되어 저장된다. 장점은 정해진 스키마로 인해서 데이터의 무결성이 보장되고 각 데이터를 관계를 통해 중복 없이 저장할 수 있다. 즉 정해진 데이터 공간을 효율적으로 활용할 수 있다. 하지만 스키마를 미리 정해야하고 관계가 되어있는 데이터들 간에 조인으로 인해 쿼리문이 복잡해질 수 있다. 대표적으로는 MySQL, PostgreSQL NoSQL(비관계형 DB) : SQL을 제외한 모든 방식의 DB이다. SQL과 반대로 데이터 간의 관계가 없고 다른 자료구조를 같은 컬렉션에 추가할 수 있다. 그래서 장점은 일반적으로 속도가 빠르고 데이터의 형식이 비교적 자유롭지만 그로 인해 데이터가 중복될 수도 ..

23.08.15 아키텍쳐 설계

아키텍쳐 설계에 대한 자세한 내용을 알기 전에 일단은 전체적인 내용과 개념에 대해서 이해하기 위해서 정리한 것이다. 이를 통해서 적어도 내가 어떻게 프로젝트를 설계했는지 설명할 수 있어야겠다. 그리고 더 공부를 해서 여러 방법들을 참고하고 장단점을 비교하거나 보완해서 보다 효율적인 설계를 할 수 있어야할 것이다. 집짓기에 비유 요구 사항 수집 및 분석: 집을 지을 때 필요한 방의 개수, 크기, 기능 등을 정합니다. 이는 집의 거주자가 원하는 스타일과 필요로 하는 기능을 이해하는 과정과 유사합니다. 시스템 분해: 큰 집을 주방, 거실, 침실 등의 각 구역으로 나눕니다. 각 구역이 어떤 역할을 하는지 결정합니다. 구성 요소 선택: 어떤 재료(벽돌, 목재, 철근 등)를 사용할 것인지 결정합니다. 통신 및 인터..

23.08.14 passport.js

Passport.js는 Node.js 애플리케이션에서 사용되는 인증 미들웨어. 사용자 인증을 구현하기 위한 간단하고 유연한 도구를 제공. 즉, 인증 처리를 대신해주고 개발자는 인증 이후 처리에만 집중할 수 있게 해 준다. 주요 특징: 유연성: Passport.js는 "전략"이라는 개념을 도입함으로써 다양한 인증 방법을 지원. 개발자는 애플리케이션에 필요한 전략만 선택하여 사용하면 된다. 450가지 이상의 전략: 로컬 인증(이메일/비밀번호)부터 Facebook, Google, Twitter와 같은 OAuth 기반 인증까지 수많은 전략이 커뮤니티에 의해 제공하기에 참고할 자료가 많다. 세션 관리: 사용자가 로그인할 때, Passport는 세션에 사용자 정보를 저장하여 이후의 요청에서도 인증 상태를 유지할 수..

23.08.13 Access token과 Refresh token

Access token과 Refresh token은 주로 OAuth 2.0과 같은 인증 프로토콜에서 사용되며, 사용자의 세션 상태를 유지하면서 보안성을 높이기 위한 목적으로 사용됩니다. 로컬 인증 사용자는 자신의 자격 증명(예: ID와 비밀번호)으로 인증을 요청합니다. 인증 서버는 사용자의 자격 증명을 검증하고, 검증이 성공하면 Access Token과 Refresh Token을 발급합니다. 이 두 토큰은 클라이언트에 반환되며, 클라이언트는 적절하게 저장하여 사용합니다. 외부 인증 사용자가 어플리케이션에 로그인을 시도합니다. 어플리케이션은 사용자를 OAuth2 제공자(ex. Google, Facebook)로 리다이렉트합니다. 사용자가 로그인 후, 해당 제공자로부터 어플리케이션에 접근할 권한을 부여받습니다..

23.08.12 객체 지향 프로그래밍 (OOP)

객체 지향 프로그래밍은 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체로 만들고, 객체들 간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다. 객체는 프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간을 의미하며 값을 저장할 변수와 작업을 수행할 메서드를 서로 연관된 것들끼리 묶어서 만든 것을 객체라고 할 수 있다. 특징 추상화 : 객체에서 공통된 속성과 행위를 추출 하는 것 캡슐화 :데이터 구조와 데이터를 다루는 방법들을 결합 시켜 묶는 것 (변수와 함수를 하나로 묶는 것을 뜻함) 상속 : 클래스의 속성과 행위를 하위 클래스에 물려주거나 하위 클래스가 상위 클래스의 속성과 행위를 물려받는 것 다형성 : 하나의 변수명, 함수명이 상황에 따라 다른 의미로 해석될 수 있는 ..

23.08.11 DI와 IoC

DI : Dependency Injection, 의존성 주입. 소프트웨어 개발에서 컴포넌트들 간의 의존성을 느슨하게 만들어주는 설계 원칙을 나타낸다. DI는 클래스나 모듈 등이 외부에서 필요한 의존성을 직접 생성하는 것이 아니라, 외부에서 주입받도록 하는 패턴을 말한다. 이를 통해 유연한 코드를 작성하고 테스트 용이성을 높일 수 있다. IoC : Inversion of Control, 제어 역전. 이는 소프트웨어의 제어 흐름을 개발자가 아닌 프레임워크나 컨테이너에 의해 결정되는 것을 나타낸다. IoC는 DI와 관련이 있으며, DI 패턴을 사용하여 IoC를 구현할 수 있다. IoC는 코드의 결합도를 낮추고 유연한 애플리케이션을 개발하는 데 도움을 줄 수 있다. 이렇게 설명은 나오는데 솔직히 잘 모르겠다. ..

23.08.09 HTTP와 HTTPS

HTTP Hyper Text Transfer Protocol, 인터넷에서 데이터를 주고받을 수 있는 프로토콜 클라이언트 - 서버 구조 클라이언트의 요청이 있을 때만 서버에서 요청에 따른 응답을 반환한다. 클라이언트에서 서버에 요청을 하는 단방향 통신으로, 서버가 먼저 요청을 할 수 없고 무조건 요청을 받아야 한다. 무상태 프로토콜(Stateless) 지향 서버가 클라이언트의 연결/상태 정보를 보존하지 않는다. 즉, 클라이언트가 이전 요청과 같은 데이터를 원한다고 하더라도 다시 서버에 동일한 요청을 해야 한다. 클라이언트가 이전에 자신이 요청한 정보를 저장해 놓고 해당 정보를 다시 보내주므로, 클라이언트의 요청에 어떤 서버가 응답해도 상관이 없어서 서버 확장성이 높은 장점이 있는 반면, 클라이언트가 많은 ..

23.08.04 브라우저는 어떻게 주소를 찾을까?

사용자의 요구를 충족시키기 위해서 개발자는 브라우저가 어떻게 작동하는지 알아야 한다. 브라우저는 대부분 싱글 쓰레드로 작동하는 것을 이해하고, 네트워크를 통해 컴퓨터로 데이터를 전송하는 지연시간을 줄이는 웹최적화가 필요하다. 탐색은 웹체이지 로딩의 첫 단계이며, 어디로 요청을 보내야할지 찾는 작업이다. URL로 주소를 입력하지만 실질적으로 IP주소를 통해 서버에 접근해야하고 IP주소를 알기위해서 DNS조회가 필요하다. DNS 조회를 통해서 IP주소를 찾아 서버에 요청을 하는데 글꼴, 이미지, 스크립트, 광고 그리고 다른 자원들이 서로 다른 호스트 이름을 가지고 있다면 각각 조회를 해야해서 시간이 오래 걸리게 된다. 그리고 IP는 일정시간동안 캐시되어 DNS 조회를 하지 않게 도와준다. 이렇게 IP주소를 ..