coding/IT, CS 17

http https

프론트와 협업을 하면서 백앤드는 익스프레스로 http 환경의 서버를 띄우고 프론트는 버셀?이라는 것을 사용해서 서버를 띄우면 https의 환경이 만들어진다. 하지만, 두 서버가 api 통신을 할 경우 http 환경이 달라서 통신을 할 수가 없다. 그렇기 때문에 프론트에서 S3로 http환경을 구축하여 통신하거나 서버에서 https 환경을 만들어 통신해야 한다. 백앤드가 배포를 중점으로 하진 않지만, 그래도 프론트보다 배포에 조금 더 관여를 하고 있기 때문에 서버에서 https 환경을 구축하는 게 맞다고 생각한다. 또한 http와 https의 보안 차이도 크기 때문에 보안을 강화해서 통신을 하는 것이 좋을 것 같다. http란 기본적으로 클라이언트와 서버 사이에서 데이터를 주고받는 통신 프로토콜이다. 주고..

coding/IT, CS 2022.08.19

Side effect, Decoupling, 디자인 패턴

side effect 사전적 정의 : 부작용 프로그래밍의 side effect 사전적 정의와 다르게 프로그래밍의 사이드 이펙트는 꼭 부정적인 말은 아니다. 예상한 결과와 다르게 결과가 다르게 나타나는 현상을 말한다. 실행 도중 어떠한 객체를 접근해서 변화가 발생하는 행위 함수를 실행할 때 return 값과는 별개로 발생하는 프로그램 상태 변경 개발 영역에서는 버그라고 하기도 한다. 구현하고자 하는 형태의 기능이 동작이 되지 않고, 어떠한 다른 요인으로 인해서 동작을 못하거나 값이 다른 올바르게 나오지 않는 여러 가지 상황을 사이드 이펙트라고 한다. 빈 구문이 아니라면 반드시 하나의 사이드 이펙트를 가져야 한다. 빈 구문이 아닌데 사이드 이펙트가 일어나지 않는 구문은 일반적으로 프로그래밍 에러를 가리킨다...

coding/IT, CS 2022.08.10

테스트 코드 종류와 테스트 피라미드

테스트 코드란 작성한 코드에 문제가 없는지 테스트하기 위해 작성하는 코드 테스트 단위가 좀 더 쪼개질수록 어느 부분에서 에러가 발행했는지 좀 더 찾기가 쉬워진다. 테스트 코드의 종류 - 단위 테스트(유닛 테스트) 가장 작은 규모의 기능을 테스트 - 통합 테스트 여러 가지 기능을 합쳤을 때 생시는 문제를 방지하기 위한 테스트 - E2E 테스트(end-to-end 테스트) 백앤드부터 시작해서 최종적으로 웹페이지가 원하는 대로 동작하며 원하는 데이터를 잘 보여주는지 확인 TDD Test Driven Development의 약자로 테스트 주도 개발이라고 한다. 작은 단위의 테스트 코드를 작성하고, 이를 통과하면, 코드를 추가하는 단계를 반복하여 구현 즉, 바로 코드를 작성하는 것이 아닌, 테스트 코드를 먼저 만..

coding/IT, CS 2022.08.09

마이크로 서비스 아키텍처 도메인

마이크로 서비스 하나의 큰 애플리케이션을 여러 개의 다른 역할을 수행하는 애플리케이션으로 분리하였을 때 각 애플리케이션을 의미 마이크로 서비스 아키텍처 마이크로 서비스를 분리하여 여러 개의 작은 애플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처 애플리케이션을 특화된 기능별로 나누게 되면 자연스럽게 애플리케이션의 추상화(abstraction)가 가능해진다. 즉, ‘인증’을 담당하는 서비스(예, auth.example.com)는 그 구체적인 구현 내용을 모르더라도 다른 서비스에서 약속된 인터페이스를 이용해 인증 과정을 수행할 수 있다. 모놀리틱 아키텍처(MONOLITHIC ARCHITECTURE) 비즈니스 로직을 담당하고 있는 애플리케이션이 존재하고, 해당 애플리케이션은 데이터베이스 등 외부 시..

coding/IT, CS 2022.08.07

Restful API

Rest API API 데이터와 기능의 집합을 제공하여 컴퓨터 프로그램간 상호작용을 촉진하여, 서로 정보 교환을 가능 하도록 하는것 프로그램을 위한 인터페이스. 즉, 프로그램 간 커뮤니케이션을 담당하는 기능 Rest API에서 Rest 는 Representational State Transfer의 약자로 소프트웨어 프로그램 아키텍처의 한 형식이다. 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다. Rest는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용 할 수 있는 아키텍처 스타일이다. Rest의 개념 웹에서 데이터를 전송하고 처리하는 방법을 정의한 인터페이스 HTTP URI를 통해 자원을 명시하고, HTT..

coding/IT, CS 2022.07.31

SQL과 NOSQL의 차이

DBMS(Database Management System) 데이터를 장 저장하고, 잘 찾기 위해 만들어진 소프트웨어 ex) mongodb DBMS가 설치된 서버 컴퓨터를 데이터베이스 서버(DB서버)라고 함 'DB 저장'이라는 말은 DBMS가 설치된 서버에 데이터를 저장하는 것을 뜻함 데이터 베이스 - 관계형 DB(RDB) : SQL - 비관계형 DB : NoSQL 관계형 DB : SQL 데이터 형식이 정해져 있고, 데이터 끼리 관계를 맺어 모순이 없는 데이터를 유지할 수 있도록 도와주는것에 집중한 데이터베이스 SQL은 '구조화 된 쿼리 언어 (Structured Query Language)'의 약자 데이터베이스 자체를 나타내는 것이 아니라, 특정 유형의 데이터베이스와 상호 작용하는 데 사용 하는 쿼리 언..

coding/IT, CS 2022.07.25

JavaScript의 ES, ES5/ES6

JavaScript ES ES 는 ECMAScript 의 약자 ES라는 것은 'Javascript의 표준 규격'을 의미 Ecma International이 ECMA-262 기술 규격에 따라 정의하고 있는 표준화된 스크립트 프로그래밍 언어를 말한다. 자바스크립트를 표준화하기 위해 만들어졌다. ES 가 등장하게 된 배경 Netscape이라는 웹 브라우저를 통해 상호작용을 강조하기 위해 간단한 기능을 넣어 만든것이 자바스크립트의 시초였다. 웹 개발자들은 각 브라우저에서 동일한 기능을 구현하기 위해 모든 코드를 따로 작성해줘야 했기 때문에 표준화 작업을 위해 많은 사람들이 노력했고, 그 결과 Ecma International에서 ECMAScript(ECMA-262)라는 이름으로 현재의 자바스크립트 표준을 제정하..

coding/IT, CS 2022.07.24