목록개발 (301)
서버리스 (Server-less) 서버리스 서비스는 그 말마따나 서버가 없는 상태에서 서비스를 제공하는 것을 말한다. 서버가 없는데 어떻게 API를 요청 / 응답 받을 수 있겠느냐 싶다만, API 는 클라우드 제공업체(GCP || AWS 등) 가 제공하는 클라우드 펑션(Cloud Fuction)을 통해 이루어진다. 브라우저에서 API를 요청하고, 클라우드는 클라우드 함수를 통해 API 에 대해 응답한다. 혹여 해당 API 가 DB에 대한 접근을 요청하는 경우, 클라우드에 만들어둔 SQL에 접속해 응답한다. 서버리스 서비스의 장단점에 대해 얘기해보자면 다음과 같다. 서버리스 서비스는 말 그대로 서버가 없기 때문에, 일반적인 서버 배포 비용을 부담할 필요 없이 클라우드 펑션이 호출되는 경우에만 비용이 발생하..
며칠 간 filter / some / map 등과 같은 배열함수와 이중 반복문으로 풀려다가 의외로 단순히 풀렸다. 2,6,8 의 최소공배수나, 12, 8의 최소공배수가 같다는 특징때문이었는데, 이 덕분에 이전에 사용해봤던 알고리즘으로 최소공배수를 구하는 유클리드 호제법을 콜백 함수로 활용했다. function solution(arr) { function callback(n, m) { // 유클리드 호제법 let a = n let b = m while (b !== 0){ let temp = a%b a = b b = temp } return (n*m)/a } let result = arr.reduce((a,c)=>{ return callback(a,c) // 콜백 },1) return result }
HTTP http 란 Hyper Text Transfer Protocol 의 약자로, 인터넷에서 하이퍼 텍스트 문서를 교환하기 위해 사용하는 프로토콜이다. 말이야 어려운데, HTML, CSS, 텍스트 등을 전송하는 포트 80의 프로토콜이라고 이해하면 편하다. HTTPS https 란 Hyper Text Transefer Protocol over Secure Sokets Layer 의 준말로 http의 보안 문제가 제기되자 이를 보완하기 위해서 등장한 프로토콜이다. https는 문서를 암호화 & 복호화 과정을 거쳐 데이터를 전송하기 때문에 상대적으로 안전하다. SSL SSL 은 Secure Sokets Layer 의 준말로, '웹 구간 암호화(보안 소켓 계층)'을 의미한다. 보통은 https 와 같은 의미..
Firewall(DMZ) Firewall(DMZ) 란 불을 막는 벽이라는 뜻의 방화벽이라는 의미로, 네트워크 상에서의 '사고'를 막는 보안 시스템을 뜻한다. 방화벽은 미리 정의한 보안 규칙에 따라서 신뢰할 만한 사이트와 그렇지 않은 사이트를 구분하여, 신뢰하지 못하는 사이트에서 우리 사이트에 접근할 수 없게 만들어준다. 위와 같은 보안 방식을 '접근 통제'라고도 하는데, 방화벽은 이뿐만 아니라 다양한 역할을 한다. 방화벽의 역할에 대해 요약하면 다음과 같다. 접근 통제 : 신뢰할 사이트 / 신뢰하지 못하는 사이트를 구분하여, 신뢰하지 못하는 사이트의 접근을 막는다. 메세지 인증 : 스마트폰 || 브라우저에 담긴 메세지를 통해 인증 절차를 거친 뒤 접근 허용 여부를 결정한다. 사용자 인증 : 그 말마따나 ..
Jest Jest 란 페이스북에서 만든 것으로, 완성한 각종 기능들이 정상 작동하는지 파악하는데 도움을 주는 라이브러리이다. 해당 라이브러리는 NestJS에 내장되어 있어 쉽게 사용이 가능하다는 특징을 가지고 있다. Jest 가 필요한 이유에 대해 가볍게 설명하자면, 개발자의 의도대로 작동하고 있던 API 라고 하더라도 타 API나 함수가 개입하게 된 후에도 이전처럼 정상작동한다는 보장이 없을 뿐더러, 매번 기능을 추가할 때마다 기존의 API를 일일히 모두 정상작동하는지 확인할 수도 없는 노릇이다. 하지만 Jest 를 사용하게 되면 TestCode를 작성해 둘 경우 테스트를 통해 한번에 모든 기능들의 작동을 확인할 수 있다는 장점을 가진다. 테스트를 진행하는 방식으로는 unit test : 프로그램 내 ..
DNS DNS 란, Domain Name System의 약자로, 웹 사이트의 IP주소와 도메인 주소를 이어주는 역할을 한다. 굳이 따지면, 'zynoob.tistory.com'이라는 사이트를 IP주소로 변환시켜 브라우저가 접속할 수 있도록 하는 것을 말한다. 방식은 위와 같다. 1. 브라우저에서 어떤 사이트에 대해 접속을 시도하면, 2. DNS 서버는 이 주소를 받아 해당 key에 맞는 value(IP주소) 를 반환하게 되고, 3. 브라우저는 반환받은 IP주소로 접속하게 된다. 이때 DNS 서버는 세상에 넘쳐나는 도메인 주소들을 계층화하여 각기 다른 서버에 저장하게 된다. Load Balancer 앞서 DNS에 대해 설명하면서, 수많은 주소들을 각기 다른 서버에 저장한다고 얘기했다. 이는 서버에서 클라이..
TDD TDD (Test Driven Development)는 '테스트 주도 개발'의 약어다. 기본적인 정의로는, 경영학에서의 'Plan - Do - See' 의 방식과 같은 피드백 과정을 프로그래밍 과정에서도 사용하는 것을 의미한다. 프로그래밍에서는 '실패 코드 작성 - 성공 코드 작성 - 리팩토링 코드 적용' 의 과정을 거치며 TDD가 이루어지게 되는데, TDD 가 여러 번 이루어질수록 해당 코드에서 오류가 일어날 가능성이 적어지며 더욱 안정성을 가질 수 있게 된다. TDD의 장단점 위와 같은 방식의 장점으로는 사소한 실패 코드를 작성하고 이를 피해 프로그래밍함으로써 프로그래밍 중 나타나는 오류들을 최소화시킬 수 있으며, 등장하는 오류들의 원인이 무엇인지 파악하기 쉬운 편이고, 이로 인해 리팩토링 시..
미래의 나에게 yarn add redis yarn add cache-manager@4.1.0 yarn add cache-manager-redis-store@2.0.0 yarn add --dev @types/cache-manager-redis-store yarn add jsonwebtoken 기존에 만들어 둔 로그인 프로세스의 경우, refreshToken 이 만료되지 않으면 로그아웃이 되지 않는다는 단점이 있었다. 따라서 이번에는 제대로 된 로그아웃 프로세스를 구현하려고 하는데, 이번에는 redis 를 이용하여 API 를 만들어 보도록 한다. about redis 2023.02.13 - [코딩/알쓸코잡] - Redis Redis Redis Redis(REmote DIctionary Server) 란, 비..