본문 바로가기

나의 개발일지/CS10

Github Actions, Nginx, Docker를 이용한 Blue-Green 무중단 배포 현재 회사 서버는 단일 EC2 인스턴스에서 하나의 Docker 컨테이너를 운영하여 작동 중인데 컨테이너 교체 방식 (In-place Deployment)으로 작동하다 보니 약간의 서비스 중단 시간이 발생한다. Github Actions 내역을 통해 매번 1분 이상의 deploy 시간 동안 서비스가 중단 되는 걸 확인했는데 본격적으로 서비스 운영에 들어가게 되면서 1분의 중단 시간도 없애는 게 안정적인 서비스 운영에 도움이 되겠다는 생각에 무중단 배포를 건의했다.물론 백엔드가 나 혼자뿐이라 내가 다 하면 되므로 현 상황에 맞는 방법을 찾아보았다. Docker를 사용한 무중단 배포 전략으로는 대표적으로 롤링 업데이트(rolling update)와 블루-그린 배포(blue-green deployment)가 존.. 2024. 5. 13.
HTTP와 HTTPS - 비밀번호 평문 전송은 안전할까? 부트캠프 파이널 프로젝트 때 프론트엔드 레포에 이슈가 달렸었다. 어쩌다 지나가는 분이셨는진 모르겠지만(팀원 그 누구도 알지 못함) 덕분에 http 통신 과정에서의 데이터 암호화에 대해 생각해 볼 기회가 되었다. 결론은 https 통신을 하고 있으므로 평문으로 전달해도 문제가 되지 않을 것 같단 판단에 평문 전달 후 서버에서 단방향 암호화로 데이터베이스에 저장하는 방식을 취했다. https로 클라이언트-서버 통신을 하면 SSL/TLS로 암호화되어 비밀번호는 결국 일반 텍스트가 아닌 암호화된 데이터로 전송되기 때문이다.(이슈에 링크된 암호화 적용 기준은 오른쪽과 같다) ▼ HTTP (HyperText Transfer Protocol)- 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 간 통신.. 2024. 2. 14.
이벤트 기반 프로그래밍(event-driven programming) ▼ 이벤트 기반 프로그래밍(event-driven programming)이란? - 이벤트 발생에 의해 프로그램 흐름이 결정되는 프로그래밍 패러다임 이벤트 컴퓨터 용어로서의 이벤트: 컴퓨터 회로를 구동시키기 위해 발생하는 일 마우스 클릭, 키보드 입력, 화면 터치, 센서 출력, 프로그램 로딩 과거에는 모든 프로그램의 흐름을 시간의 흐름대로 순서대로 해석하려는 경향이 있었다 콘솔로 프로그래밍을 할경우에는 사용자의 입력을 받는 타이밍이 있고 인터럽트(일종의 예외)가 발생하더라도 굉장히 소수였다. 즉 흐름을 예측할 수 있었다는 것이고 예측 하지 못하는 예외들은 소수였다는 것이다. 따라서 그냥 일반적으로 순차적으로 코딩을 해도 아무 문제가 없었다. 문제는 현재는 이 흐름이 별로 맞지는 않다는 것이다. 과거에 흐름.. 2022. 10. 11.
CORS(Cross-Origin Resource Sharing, 교차 출처 리소스 공유) ▼ CORS란? 브라우저에서 실행 중인 스크립트에서 시작되는 cross-origin HTTP 요청을 제한하는 브라우저 보안 기능으로, 브라우저와 서버의 도메인이 일치하지 않으면 기본적으로 요청이 차단된다. 이 현상은 브라우저에서 서버로 요청을 보낼 때만 발생하고, 서버에서 서버로 요청을 보낼 때는 발생하지 않는다. 위의 사진처럼 api 서버의 url과 동일한 Domain A의 경우 에러가 발생하지 않으나 Domain B의 경우 CORS 에러가 발생한다. ▼ CORS 문제를 해결하기 위해서는? → 응답 헤더에 Access-Control-Allow-Origin 헤더를 넣어야 한다 (클라이언트 도메인의 요청을 허락하겠다는 뜻을 가짐) (아래의 방법은 nodejs와 express로 api 서버를 개발하는 경우의.. 2022. 8. 14.
기술 표준과 오픈소스, 오픈소스 라이센스 ▼ 기술 표준 · 표준 : 어떤 기술적 산물이 어떻게 만들어지고 어떻게 작동하도록 되어 있는지 명확하고 상세하게 기술한 것. 국가적 기술 표준 워드의 .doc / .docx 파일 포맷과 같이 공식적으로 정해지지는 않았지만 널리 사용되며 생겨난 '사실상의' 표준 ▼ 국가적 기술 표준 예시 ▼ 소프트웨어에서의 표준 예시 ▼ 표준의 중요성 상호 운용성 (호환성) - 같은 기종 또는 다른 기종 간에 정보교환 및 처리를 가능하게 해줌. 비용 절감 - 제조업체, 벤더 등 사업자는 단위 생산·거래 비용을 줄일 수 있으며, 대량생산을 통해 규모의 경제(economy of scale)를 실현하는 것이 가능 무역 활성화, 해외시장 진출 - WTO TBT 협정에 따라 국가 간 무역은 국제표준을 따르고 있으며, 이를 통해 .. 2022. 8. 9.
선형 검색 알고리즘과 이진 검색 알고리즘 소프트웨어의 알고리즘을 설명할 때 음식의 레시피에 자주 비유하곤 한다 초콜릿 케이크 레시피 ***프로그램 재료: ~ 연산에 필요한 데이터 오븐에서 30분, 또는 반죽이 자리 잡을 때까지 구우세요. 표면 위에 손바닥을 살짝 올려서 확인하세요. 수행할 작업 완성 결과 하지만 실제 프로그램의 알고리즘은 레시피와 같이 모호하지 않다. '반죽이 자리 잡을 때' '손바닥을 살짝 올려서 확인' 솔직히 사람인 내가 들어도 모호한 표현이다. ▼ 알고리즘 어떤 문제를 풀기 위한 절차나 방법 어떤 문제가 있을 때 주어진 '입력' 정보를 원하는 '출력(답)' 정보로 만드는 일련의 과정을 구체적이고 명료하게 적은 것. '세심, 정확, 명료'가 중요한 키워드. [ 알고리즘 유의사항 ] 데이터가 어떤 유형이어야 .. 2022. 8. 1.