본문 바로가기

분류 전체보기

(37)
[네트워크] Websocket과 socket.io 채팅 기능을 구현하다 보면 Websocket과 socket.io를 많이 들어봤을 것이다. 일단 저거를 써서 채팅 기능을 구현하는건 알겠는데 도대체 뭐지? 라는 생각이 든다. Websocket이란? 일단 Websocket이 나오게 된 배경 부터 알아보자 맨 처음에 웹이라는 것이 나왔을때 브라우저의 렌더링 방식은 HTTP요청에 대하나 응답을 받아서 화면을 새로 만들어주는 방식이었다. 이를 stateless방식이라고 하는데 클라이언트에서 요청을 보내면 서버는 요청 받은것에 대한 응답을 건네주고 연결을 끊어버리는 식이다. 왜 서버와의 연결을 계속 유지하지 않지? 클라이언트가 10억이라고 치면 서버에서 그 많은 연결을 유지하게 되면 과부하가 걸려 다운된다. 왜 stateless상태를 채택했는지 알 수 있다. 이렇..
[Backend] OAuth란?(+ 동작방법) 프로젝트를 진행하면서 OAuth라는 것을 알게 되었다. OAutt는 간단히 말하면 무슨 토큰 같은거로 로그인을 대신한다 생각하면 되는데 굳이? 라는 생각이 들었다. 그렇다면 OAuth는 왜 생겨 났을까? 만약 내가 서비스 하나를 만들었다고 치자 이 서비스에서 네이버에 등록된 유저의 정보가 필요 하다면? 예전에는 사용자로부터 아이디와 비밀번호를 받은 다음에 이걸 가지고 네이버에 로그인을 했었다. 하지만 이렇게 되면 무슨 문제가 있을까? 개인의 서비스들은 기업에 비해 보안이 너무 취약하다... 누군가가 우리 서비스에 있는 고객의 아이디와 비밀번호를 탈취한다면? 고대로 털리는 것이다.. 심지어 네이버입장에서도 고객의 정보가 유출되는 셈이다. 그러면 어떻게 아이디와 비밀번호를 우리 서비스에 안넘기고 네이버에 접..
[Backend] ORM과 Sequelize 데이터 베이스를 사용하다 보면 ORM이라는 말을 자주 들어봤을 것이다. 하지만 저는 처음 들어보기 때문에 이렇게 기록을 남겨요..ㅎㅎ ORM이 뭐야? 객체(클래스)와 관계(관계형 데이터 베이스)와의 설정을 의미한다. 내가 이해한 말로 풀어보자면 ORM을 사용하면 쿼리문을 직접 작성하지 않아도 된다. ORM에서 사용하는 Class가 RDBMS의 테이블과 연결된다고 생각하면 쉽다. Class의 메서드를 사용하는데 테이블에 대한 쿼리문을 실행하는 것과 동일한 행동을 한다!라고 생각하면 될 것 같다. 쉽게 말하면 나 대신 데이터베이스와 대화를 해주는 번역기와 같다. ORM을 왜쓰지? 클래스를 사용하는 것처럼 데이터베이스를 조작할 수 있으니 객체지향처럼 더 직관적이고 로직에 집중할 수 있게 해준다! CRUD를 위..
로그인 - 쿠키와 세션 거의 모든 사이트에는 로그인 기능이 필수적으로 들어가 있다! 로그인이 정확히 무엇일까? 서버에는 많은 클라이언트의 개인적인 정보가 저장되어있다.(특히 사용자가 많은 서비스일수록!) 하지만 로그인이 없으면 누가 요청을 보냈는지 확인하지 못해 다른 사용자의 개인정보를 넘겨줄 수도 있다! 그래서 로그인이라는 인증을 통해서 특정 사용자 요청에 따른 데이터만 골라서 보내주는 것이다!! 다른 사이트를 보면 로그인 한번 하면 유지가 되던데 통신 연결이 계속 되어 있는건가? 아니다. HTTP는 무상태 즉, stateless와 비연결성의 특성을 가지고 있기 때문에 한번 요청을 보내고 받게 되면 연결이 끊어지게 된다. 그러지 않고 계속 연결되어 있으면 서버에 과부하가 걸리게 된다. 그러면 매번 아이디, 비밀번호를 보내 인..
[Database] ERD란 무엇일까? 예전에 학교에서 ERD를 배워본적이 있지만 잘 기억이 나지 않아요ㅜㅜ 그래서 이번에 다시 한번 공부하고 정리를 해보려고 합니다!! 그렇다면 ERD란 무엇일까? ERD는 개체 속성과 개체 간의 관계를 그림 혹은 도표로 표현한 것이다!! 간단하게 관계를 그림,표로 시각화 했다고 보면 될 거 같다!! 데이터의 흐름과 연관성을 이해하는데 매우 중요한 역할을 한다. ERD는 왜 하는거지? ERD는 데이터 모델링에서 개념적인 설계를 할떄 개념 스키마를 만들기 위해 사용된다!! 쉽게 말한면 데이터 모델링을 하는이유가 요구 사항으로부터 SQL문을 얻기 위함인데(꼭 SQL이 목적은 아님) 과정은 다음과 같다. 요구사항 분석 -> 요구사항 분석서 -> 개념적 설계 -> ERD -> 논리적 설계 -> 관계형 모델 -> 물리..
[네이버 부스트캠프 - 부커톤] 생애 첫 해커톤을 마치며 추석 연휴가 끝난 목요일! 내 생애 첫 해커톤을 경험했다!! 네이버 부스트 캠프에서 주최하는 첫 해커톤 행사인 만큼 열심히 참여해보기로 했다. 그렇다면 주제는 어떻게 정했을까? 주제는 참가 신청시 제출한 캠퍼들의 아이디어 중 한 가지를 고르면 된다!! 모든 아이디어들이 참신하고 좋았지만 우리조는 I'm Everywhere의 이름을 가진 서비스를 선택하였다..! 서비스를 간단히 설명하자면 컴퓨터 화면을로 전세계를 볼 수 있는 서비스이다!! 사용자가 자신의 동네의 동영상을 올릴 수 있고, 또 다른 사용자는 랜덤한 동영상을 볼 수있는 그런 서비스이다ㅎㅎ 사실 이 아이디어의 기획의도가 마음에 들어 선택했다. 불멍이나 식물멍 같은 멍때리기가 유행하고 있지 않은가!! 이 서비스는 풍경멍을 때릴 수 있게 해준다. 집..
[nginx] nCloud서버에 nginx적용하기 nginx란 무엇일까? 경량 웹서버이다. 클라이언트로부터 요청을 받았을때 요청에 맞는 정적파일을 응답해주는 http 웹서버로 활용된다. Reverse Proxy Server로 활용하여 WAS 서버의 부하를 줄일 수 있는 로드밸런서로도 사용된다. 일단 ubuntu18.04에 최신버전의 nginx를 설치해야한다. 최신버전 nginx설치하기 nginx.list 파일을 만든후에 vi /etc/apt/sources.list.d/nginx.list 아래의 내용을 입력해준다. deb https://nginx.org/packages/ubuntu/ bionic nginx deb-src https://nginx.org/packages/ubuntu/ bionic nginx apt 업데이트 및 설치 $ apt-get upda..
[express, nodejs] res.send() VS res.json() 그리고 res.end() express를 쓰다보면 http요청을 받아 res라는 응답객체를 사용한다. 이 res를 이용해 여러 방식으로 클라이언트에게 응답을 보낸다. 오늘은 여러 방식중에서도 비슷한 세가지 방식(res.send, res.json 그리고 res.end)에 대해 알아보자! res.send() res.send()는 다음과 같이 res.send([body]) body를 인자로 받는다 body에 들어갈 수 있는 타입은 Buffer, String, Object, Array이다. // Buffer 객체 res.send(Buffer.from('fansor')) // 객체 res.send({ some: 'json' }) // String res.send('fansor') 위와 같이 여러 타입의 인자를 넣을 수 있다. res.se..

반응형