목록전체 글 (315)
ecsimsw
Flyway 소개하기 https://www.youtube.com/watch?v=pxDlj5jA9z4 DB Migration DB Migration의 필요를 모를 수 있다. 솔직히 나는 몰랐다. 배포 후 데이터를 관리해본 경험이 없었고, 유지 보수 중 스키마 구조가 바뀌는 상황에 어떻게 대처하는지 생각해본 적 없었다. 사실 flyway를 검색하면 사용 방법이 아주 자세히 잘 나와있다. 그런데도 내가 이 글을 쓰는 이유는 배포 후 DB를 관리하고 유지 보수 해본 경험이 전혀 없는 학생들에게 '당신에게 곧 이런 문제 사항이 생길 것이고, flyway라는 툴은 이걸 이렇게 풀어준다.'를 소개하고 싶었다. 나중에 그런 경험을 만났을 때, 'DB Migration 또는 Flyway tool 라는 키워드가 있었던 거..
Slack으로 Github 알림 받기 / Github 앱 설정하기 팀 프로젝트를 진행하면서 깃헙의 알림을 메일이 아닌 자주 사용하는 메신저로 받을 수 있는 방법을 찾게 되었다. 특히 이슈를 올렸을 때 즉각 확인할 수 있도록 하고 싶었다. 슬랙의 Github 앱을 사용하면 지정한 레포지토리의 이벤트를 알림으로 받을 수 있다. 또는 슬랙 내에서 issue를 close하거나 새로운 이슈를 등록할 수 있다. 특히 레벨3에서 협업 미션을 진행하고 있는 다른 우테코 팀들에게 추천하고 싶어 글을 작성하게 되었다. Github App 설정하기 1. Slack Github App을 추가한다. 2. 알림을 받을 채널을 선택한다. 슬랙 앱 추가할 때 Select Channels 설정에서 알림 받을 채널을 설정할 수 있다. ..
젠킨스 삽질 과정에서 배운 것들 Jenkins를 설정하면서 다음을 배웠다. 1. 리눅스 가상 메모리 설정 (스왑 파일 생성) aws 프리티어 인스턴스가 지나치게 느려 메모리 문제임을 확인하고 가상 메모리를 설정하였다. 코틀린 빌드 시간이 말도 안되게 느렸고, 가상 메모리로 해당 문제를 해결할 수 있었다. (결국 용량 문제로 Medium으로 갈아탔다.. ) 스왑 파일을 사용하여 Amazon EC2 인스턴스의 스왑 공간으로 메모리 할당 1. dd 명령을 사용하여 루트 파일 시스템에 스왑 파일을 생성합니다. 명령에서 bs는 블록 크기이고 count는 블록 수입니다. 스왑 파일의 크기는 dd 명령의 블록 크기 옵션에 블록 수 옵션을 곱 aws.amazon.com 2. 리눅스 포트포워딩 (iptables) 젠킨스..
프론트 앱 서버의 포트가 자동으로 변경된다? 되게 신기한 경험을 했다. Vue (webpack dev server)와 Spring boot (톰캣)를 띄웠는데 이 둘을 실행하는 순서에 따라 webpack dev server가 다른 포트로 뜨고, 작동하지 않는 경우도 있었다. 시나리오는 다음과 같다. 프론트 서버, 백 서버 모두 8080으로 설정한 상태이다. 1. 백 서버를 띄우고 프론트 서버를 띄우면 프론트-백 각각 localhost:8081 / localhost:8080으로 뜨고, 정상 작동한다. 2. 프론트 서버를 띄우고 백 서버를 띄우면 프론트-백 각각 localhost:8080 / localhost:8080으로 뜨고, 프론트 앱 서버가 무시된다. 1번 프론트서버가 8081로 뜬 이유 / Vue c..
대화하기 위한 프론트엔드 공부 Vue를 하나도 모른다. Vue 뿐만 아니라 프론트 앤드 앱이 어떻게 동작하고 배포되는지도 전혀 모르는다. 이런 표현이 맞는지 조차 모르겠다. 우아한테크코스 지원 플랫폼 제작에 참여하고, 코스 안에서 프론트 앤드 크루들과 협업하는 미션을 진행하면서, 프론트 앱이 어떻게 배포되었는지 모른 채로 너무 당연히 넘어갔다. 어떻게 배포했는지, firebase가 뭐고, netflify가 뭔지. 나는 서비스 전체를 제작하고 배포, 운영하고 싶다. 솔직히 직접적인 웹 화면, 모바일 앱 개발까진 아니더라도 적어도 그 파트를 맡는 개발자들의 말을 이해할 수 있는, 서비스의 전체적인 구조는 그릴 수 있는, 한 서비스를 운영하려면 어떤 컴포넌트들이 필요한 지는 알고 주문할 수 있는, 그런 사람이..
Blocked by CORS policy 클라이언트 어플리케이션에서 서버로 요청을 보낼 때 만난 문제이다. CORS 정책에 의해서 요청이 제한되었다는데 CORS가 무엇인지, 어떻게 해결했는지 설명하려고 한다. Access to XMLHttpRequest at 'http://localhost:8080/members/login' from origin 'http://localhost:3000' has been blocked by CORS policy : Response to preflight request doesn't pass access control check : No 'Access-Control-Allow-Origin' header is present on the requested resource. 에..
쿠기로 로그인을 한다면 로그인 1. [C] 사용자가 입력한 ID,PW를 서버에 전송 2. [S] 사용자 정보가 맞다면 맞다는 응답 or 사용자 정보 응답 3. [C] 사용자 정보를 쿠키에 저장 사용자 정보가 필요한 요청 5. [C] 요청 헤더에 쿠키 추가 6. [S] 해당 쿠키로 사용자 정보 확인 7. [S] 사용자 정보로 요청 처리 위험 사항 쿠키 정보를 확인하는 것으로 사용자 정보를 확인할 수 있다. 추가 보안 로직이 없다면 쿠키를 탈취하는 것만으로도 사용자 정보가 필요한 요청에서 사용자를 흉내낼 수 있다. 세션으로 로그인을 한다면 로그인 1. [C] 사용자가 입력한 ID,PW를 서버에 전송한다. 2. [S] 사용자 정보가 맞다면 세션 생성, 서버에 저장 (SESSIONID - INFO) 3. [S]..
Load Balancing과 세션 유지 로드 밸런싱을 간단히 말하면, 트래픽을 한 서버에서 모두 처리하는 것이 아니라, 다수의 서버에 적절하게 분배해주는 것이다. 보통 여러 대의 WAS 전면에 Web Server를 두고, 요청을 WAS에 적절히 나누는 식으로 사용된다. 이렇게 로드 밸런싱을 이용하면 서버의 부담도 줄일 수 있으면서, 한 서버가 다운되더라도 서비스를 이어갈 수 있다는 장점이 있다. 문제는 세션이다. 세션은 서버에 데이터를 저장한다고 배웠는데, 여러 was에 요청을 분산하면 세션 지속에 문제가 없을까 궁금했다. 해결책 먼저 세션 지속을 보장하는 Web Server를 사용할 수 있을 것 같다. 예를 들면 NginX plus는 Session Persistence를 지원하고 있음을 확인했다. (S..