본문 바로가기

전체 글

(45)
🗣 "시리야 배포해줘" (Travis CI) 🗣 서론 우아한테크코스 마지막 프로젝트에서 안돌의 시리 배포를 봤었다. 그때 신기했던 기억이 있어서 이번 프로젝트에 시리로 배포해보는 것을 적용해보려고 한다. 하지만 이분의 블로그에는 Jenkins를 이용 했었고, Travis CI를 이용하고 있던 나는 계속해서 방법을 찾았다. 이번 글은 Travis CI 공식 문서를 참고하여 시리로 배포하는 방법을 얘기하고자 한다. 시작하기 앞서 아래 내용을 참고하자. 나는 TravisCI를 org에서 이용하고 있기 때문에 이번글은 org에서 이용한다고 가정하고 설명하려고 한다. travis-ci.com에서 사용하는 경우는 --org 대신 --com을 입력하고, https://api.travis-ci.com에 요청해야 한다. 📌 1단계 Travis CI 명령어를 이용하..
😎 카카오 2019 겨울 인턴십: 불량 사용자(Lv3) 📌 문제 개발팀 내에서 이벤트 개발을 담당하고 있는 무지는 최근 진행된 카카오이모티콘 이벤트에 비정상적인 방법으로 당첨을 시도한 응모자들을 발견하였습니다. 이런 응모자들을 따로 모아 불량 사용자라는 이름으로 목록을 만들어서 당첨 처리 시 제외하도록 이벤트 당첨자 담당자인 프로도 에게 전달하려고 합니다. 이 때 개인정보 보호을 위해 사용자 아이디 중 일부 문자를 '*' 문자로 가려서 전달했습니다. 가리고자 하는 문자 하나에 '*' 문자 하나를 사용하였고 아이디 당 최소 하나 이상의 '*' 문자를 사용하였습니다. 무지와 프로도는 불량 사용자 목록에 매핑된 응모자 아이디를 제재 아이디 라고 부르기로 하였습니다. 이벤트 응모자 아이디 목록이 담긴 배열 user_id와 불량 사용자 아이디 목록이 담긴 배열 ban..
🔑 Travis CI 중요한 키값 관리하기 🗣 서론 개발하면서 외부 API와 연동하기 위해 중요한 키값들을 관리하는 파일을 만들고 .gitignore 설정을 했지만, push 하고 키값들이 없어서 travis ci에서 아래와 같이 테스트에 실패했다고 나왔다. 해결해보자. 📌 폴더로 관리하기 1) 압축 tar -cvf [압축 파일이름.tar] [.폴더명] 2) 암호화 //1. 터미널에 travis를 설치한다. gem install travis //2. 터미널에 travis 로그인 (Github Username과 password를 입력하면 된다) travis login //3. 암호화 travis encrypt-file [압축 파일이름] --add 3) gitignore에 압축 파일 추가 해당 압축 파일은 올라가면 안되니, gitignore에 추가해..
🏗 카카오 2019 겨울 인턴십: 크레인 인형뽑기 게임(Lv2) 📌 문제 게임개발자인 죠르디는 크레인 인형뽑기 기계를 모바일 게임으로 만들려고 합니다. 죠르디는 게임의 재미를 높이기 위해 화면 구성과 규칙을 다음과 같이 게임 로직에 반영하려고 합니다. 게임 화면은 1 x 1 크기의 칸들로 이루어진 N x N 크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다. (위 그림은 5 x 5 크기의 예시입니다). 각 격자 칸에는 다양한 인형이 들어 있으며 인형이 없는 칸은 빈칸입니다. 모든 인형은 1 x 1 크기의 격자 한 칸을 차지하며 격자의 가장 아래 칸부터 차곡차곡 쌓여 있습니다. 게임 사용자는 크레인을 좌우로 움직여서 멈춘 위치에서 가장 위에 있는 인형을 집어 올릴 수 있습니다. 집어 올린 인형은 바구니에 쌓이게 되는 데, 이때 바구니의 가장 아..
🏨 카카오 2019 겨울 인턴십: 호텔 방 배정(Lv4) 📌 문제 스노우타운에서 호텔을 운영하고 있는 스카피는 호텔에 투숙하려는 고객들에게 방을 배정하려 합니다. 호텔에는 방이 총 k개 있으며, 각각의 방은 1번부터 k번까지 번호로 구분하고 있습니다. 처음에는 모든 방이 비어 있으며 스카피는 다음과 같은 규칙에 따라 고객에게 방을 배정하려고 합니다. 한 번에 한 명씩 신청한 순서대로 방을 배정합니다. 고객은 투숙하기 원하는 방 번호를 제출합니다. 고객이 원하는 방이 비어 있다면 즉시 배정합니다. 고객이 원하는 방이 이미 배정되어 있으면 원하는 방보다 번호가 크면서 비어있는 방 중 가장 번호가 작은 방을 배정합니다. 전체 방 개수 k와 고객들이 원하는 방 번호가 순서대로 들어있는 배열 room_number가 매개변수로 주어질 때, 각 고객에게 배정되는 방 번호를..
🤷🏻 여러 서버에서 세션은 어떻게 처리할까? 📌 서론 하나의 서버에서 모든 트래픽을 감당한다고 가정해보자. 이렇게 되면 클라이언트가 많아질수록 부하가 생길 수 있다. 그래서 scale-out으로 서버를 여러대로 늘리고 앞에 로드 밸런서를 두어서 트래픽을 분배하도록 하는데 그렇다면 아래와 같은 상황이 발생할 수 있다. 로그인을 한다. 1번 WAS에서 로그인을 처리한다. 상품을 주문한다. 2번 WAS에서 요청을 받는다. 이때 발생할 수 있는 문제점은 무엇일까? 1번 WAS에서 로그인을 처리하고 세션으로 관리하는데 2번 WAS에 요청하게 되면 로그인 정보가 없다. 따라서 사용자는 로그인을 다시 해야 하는 상황이 발생할 수 있다. 어떻게 해결할지 한번 알아보자. 📌 Sticky Session Sticky Session은 쿠키나 세션을 사용하여 트래픽을 분..
🚪 SSH 쉽게 접속하기 📌 시작하기 앞서 EC2에 접속하려면 매번 아래와 같이 입력해야 한다. ssh [HOST NAME]@[IP ADDRESS] -i [PEM NAME].pem 외우기에는 어려움이 있기에 주로 메모장에 적어놓고 접속하는데 이것 마저도 귀찮다. 이번 글은 EC2에 쉽게 접근하기 위한 방법에 대해 글을 써보려고 한다. 결과적으로 "ssh [명령어]"를 입력하면 EC2에 접속할 수 있다. 📌 EC2에 쉽게 접근하는 방법 1) .pem 파일이 있는 경로 기억하기 경로가 달라도 상관없다. 나같은 경우는 ~/Develop/key 경로에 .pem 파일이 있다.(그림[1]) 2) ~/.ssh로 이동하기 3) config 파일 작성하기 vim 에디터를 이용해서 i를 입력하고 아래와 같이 작성한다. 참고로 "[]" 안에 있는 ..
🔐 SSL & TLS? 📌 서론 개발하면서 SSL 관련 Exception이 발생했다. 해결하기 위해 여러 방법들을 찾아보고 해결 했다. 하지만 SSL이 뭔지 모르고 해결했기 때문에 이것은 해결했다고 할 수 있을까? 문득 이런 생각이 들었다. 이렇게 저렇게 설정하면 된다고 하지만, 본질적인 부분을 모르거나 핵심적인 키워드에 대해서 모르고 넘어가게 되면 또 같은 상황이 반복될거라 생각했다. 따라서 이번 글은 SSL을 알고 넘어가기 위해 글로 정리하려고 한다. 📌 SSL? 우리는 웹 서비스를 이용하려고 할 때 해당 서비스는 보다 더 안전한 서비스를 제공하기 위해 노력하고 있다. 이때 웹서버와 브라우저 사이의 보안을 위한 것이 SSL이다. 웹 서비스를 이용하다보면 종종 자물쇠 모양(그림[1])을 볼 수 있는데 해당 서비스는 SSL 이..