반응형

분류 전체보기 136

AppJam: 2주간 장기간 해커톤 후기

팀이 이름을 남기는 시대 먼저 이 키워드로 포스팅을 시작하고 싶다. 개인이 이름을 남기는 시대가 지나가고, 이제 대부분의 프로젝트가 팀 단위로 이루어지게 됨에 따라 '얼마만큼 팀에 기여할 수 있는가'에 관한 역량이 중시되는 시대가 찾아왔다. 이번 해커톤에서 만들어낸 fluff 프로젝트는 Plan, Design, Android, iOS, Server 총 5개의 파트와 그를 구성하고 있는 13명의 팀원들이 이루어낸 우리의 이야기가 담긴 프로젝트이다. 그렇기에 다른 포스팅과는 조금 성격이 다르게 이 글에서는 우리가 팀이었기에 해낼 수 있었던 것들에 관하여 나누어 볼까한다. Fluff-Project/Fluff_Server One and Only for you, vintage shopping mall Fluff...

Forum/Retrospect 2020.01.05

[Tech] JWT(Json Wet Token)이란?

JWT 이전에는 세션 방식을 이용해서 로그인 기능을 구현했지만, 최근엔 JWT라는 토큰 기반의 인증 방식이 나오면서 웹과 모바일에서 대부분의 인증이 JWT로 구현되고 있다. JWT(Json Wet Token)는 클레임 토큰 기반 인증 방식으로 인증에 필요한 정보를 암호화시켜 토큰 body에 저장함으로써 클라이언트가 증명서처럼 사용한다. 세션과 비교 하였을 때 JWT JWT는 세션과 비교하였을 때 무상태(stateless)와 확장성(scalability)의 이점이 있다. 토큰은 클라이언트에서 저장하기 때문에 서버측에서는 stateless하며, 요청이 왔을 때 서명이 옳바른지만 확인하면 되므로 비저장의 이점을 지닌다. 또한 msa와 같은 서버가 여러대로 분리되어 사용되고 있다면 어떤 유저가 로그인 햇을 때 ..

[Node.js] Sequelize : ORM(Object-relational Mapping) 사용해보기

Sequelize란? 이번 포스팅에서는 Node.js의 ORM 기술인 sequelize를 사용해보도록 하겠다. 시퀄라이즈는 자바스크립트 객체와 데이터베이스의 릴레이션을 매핑해주는 도구이다. 시퀄라이즈는 자바스크립트 구문을 알아서 SQL로 변환해주어서 좀 더 의존성이 낮은 프로그래밍을 할 수 있도록 도와준다. 또한 어느 정도 문법이 호환되므로 MySQL 뿐만 아니라, MariaDB, PostgreSQL, SQLite 등 다른 데이터베이스로 전환이 비교적 자유롭다. ※ 좀 더 자세한 내용은 아래 URI에서 확인하도록 하자. [Database] ORM(Object-relational Mapping)이란? ORM이란? ORM(Object-relational Mapping)이란 OOP 간의 호환되지 않는 데이터를..

[Database] RDB(relational database)에서 테이블간의 관계 (1:1, 1:N, N:M)

관계형 데이터베이스는 두 entity끼리 관계를 맺을 수 있기 때문에 이러한 이름을 가지게 되었다. 따라서 rdb를 사용하다 보면 foreign key를 이용하여 테이블 간의 관계를 정의해야 하게 되는데, 이러한 관계에는 아래와 같은 유형이 있다. 1 : 1 (일대일) 1 : N (일대다) N : M (다대다) SNS(Social network service) 어플리케이션의 데이터베이스를 예를 들어보겠다. 사용자는 자신의 정보를 담고 있는 테이블과의 관계만 존재하므로 1 : 1 관계라고 할 수 있다. 반대로 N : M 관계로는 게시글 테이블과 해시태그(#)를 예로들 수 있다. 마지막으로는 게시글 하나에 붙는 여러개의 댓글들을 1 : N 관계라고 볼 수 있다.

[Database] ORM(Object-relational Mapping)이란?

ORM이란? ORM(Object-relational Mapping)이란 OOP 간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법으로 쉽게 말해 객체로 관계형 데이터베이스를 관리하는 기술이다. 대부분의 개발 언어 platform마다 제공되고 있으며, 대표적으로 spring에는 JPA가, node의 sequalize, 또 Django에는 orm이 내장되어있다. 기존 SQL 방식의 문제점 기존의 SQL로 데이터베이스를 관리하던 때의 문제점은 계속되는 반복되는 코드의 문제점이 있었고, SQL을 확인하기 전까지는 Entity를 신뢰할 수 없다는 불편함이 있었다. 또한 SQL의 의존적인 개발을 피할 수 없고, 계층 분할의 어려움이 있었다. ORM을 사용 했을 때의 장점 객체 관계 매핑(Object-relatio..

[Docker] Docker Tutorial (3) : 생성한 이미지 AWS에 배포하기

이번 포스팅에서는 docker hub에 직접 만든 이미지를 push 하고 aws에서 배포해보도록 하겠다. 하지만 그전에 해야 할 일이 있다. 이전 포스팅에서는 내부적으로 8080 포트에서 3000번 포트로 접근하여 로컬에서 컨테이너에 접근할 수 있었다. 하지만 그것은 어디까지나 테스트를 위한 설정이었고, 실제로 AWS에 배포를 한다는 것은 로컬에서만 접근할 수 있는 URI가 아닌, 어디에서든 접근할 수 있는 접근성이 필요하다. 그러기 위해 이 포스팅에서는 pm2를 이용하도록 하겠다. 그러기 위해서는 먼저 이전에 만들어주었던 컨테이너들과 이미지를 삭제하고 이미지를 새롭게 빌드해야한다. docker ps 명령어를 입력해보면 아까 -d (백그라운드로 컨테이너 생성 및 실행)으로 인한 3개의 컨테이너가 돌아가고..

DevOps/Docker 2019.12.09

[Docker] Docker Tutorial (2) : 직접 이미지 만들기

앞선 포스팅에서는 docker hub에서 이미지를 pull 하고 그 이미지를 이용해서 대략적인 사용방법에 관하여 알아보았다. 하지만 docker hub에서 이미지를 pull 하는 경우는 DB 이미지를 제외하면 거의 없다. 보통은 Dockerfile에 개인적인 이미지를 작성해서 사용한다. 이번 포스팅에서는 간단한 Node.js 서버를 만들고 직접 이미지를 만드는 것까지 진행해보도록 하겠다. sample project 생성하기 ※아래의 예시는 express가 설치 되어있다는 가정하에 진행되며 express로 만든 애플리케이션의 root로 접근하면 확인할 수 있는 "Welcome to Express"라는 메시지를 도커를 이용해 EC2에 배포하여 확인하는 것을 목표로 한다. // express로 프로젝트 생성 ..

DevOps/Docker 2019.12.09

[Docker] Docker Tutorial (1) : 기본적인 사용법

Docker 설치하기 --- Ubuntu sudo apt-get update sudo apt-get install docker.io # /usr/bin/docker.io 실행 파일을 /usr/local/bin/docker로 링크하여 사용 sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker MAC & WINDOW ※ Mac OS 기준으로 설명이 포스팅이 진행되지만 Window 운영체제라고 하여 크게 다르지 않습니다. 1. 이제 본격적으로 도커를 사용해보도록 하겠다. 아래 URI 접속해서 Please Login To Download 버튼을 클릭한다. https://hub.docker.com/editions/community/docker-ce-desktop-mac D..

DevOps/Docker 2019.12.08

2019 하반기 회고와 나의 이야기

어제저녁 기말고사를 마지막으로 4학년 1학기가 끝이 났다. 매 학기마다 "이번 학기가 가장 바쁜 학기가 될 것 같아”라고 이야기해온 지 3년째 매번 조금씩 더 바쁜 학기를 치열하게 살아오며 그간의 느낀 것들과 회고 같은 것들을 남기고자 느지막이 키보드를 잡는다. 나만의 것 스물두 살. 또래 친구들보다 조금 늦게 들어간 군대에서 관물대의 녹 냄새가 익술 해 질 때쯤, ‘나만의 것’에 대한 동경이 생겼다. 남들과 다른 것이 차별성이었던 곳에서 그동안 당연하게 생각해왔던 것들의 소중함을 뒤늦게 알게 되었던 것 같다. 나의 지난 삶은 의미 없고 무용한 것들로 가득했다. 배우지 않아도 되었던 반항과, 자유를 빙자할 일탈은 나를 생각과는 거리가 먼 사람으로 만들어갔다. 모든 것을 내 뜻대로 살아가던 나만의 세상에서..

Forum/Retrospect 2019.12.08

[Error Log] GCP: PERMISSION_DENIED: IAM permission 'dialogflow.sessions.detectIntent

Error Name "Internal Server Error" Error Message com.google.api.gax.rpc.PermissionDeniedException: io.grpc.StatusRuntimeException: PERMISSION_DENIED: IAM permission 'dialogflow.sessions.detectIntent Error 상황 https://ooeunz.tistory.com/60 [GCP] Google Cloud Client Library: IAM 인증 받기 GCP(Google Cloud Platform)은 Google에서 운영하는 클라우드 플랫폼이다. AWS와 동일하게 클라우드 컴퓨팅 환경을 이용해서 클라우드 서버를 이용할 수 있다. 하지만 특별히 GCP에서는..

Error Log 2019.11.30
반응형