Computer Science

서론 최근 저는 MSA를 공부중입니다. 각 마이크로서비스에 go, 특히 gin을 사용해서 개발하는것을 선호합니다. 그 이유는 다음과 같습니다. golang 너무 재밌음 컴파일 언어여서 바이너리 하나만 배포하면 됨 grpc 를 활용하기 용이함 최근 자주 사용하는 DB인 PostgreSQL과 gin을 활용하는 템플릿을 구성했습니다. 이 템플릿을 구성하며 Docker 이미지 최적화를 했습니다. 그 과정에서 Docker 이미지 크기를 99.2%나 줄이게 되었습니다. 다시 원래의 사이즈로 돌리면 무려 12921%가 증가합니다. (떡상) Docker 이미지의 사이즈를 줄이면 다음의 장점이 있습니다. 컨테이너 레지스트리(컨테이너 이미지 저장소)의 용량 절감 배포 프로세스의 소요시간 감소 실제 예제를 보시려면 http..
배포를 하자..! 지난 게시글에서 스위스 장인의 시계 처럼, 장인 정신으로 한땀 한땀 배포를 해야하는 프로세스를 만들었다고 말씀드렸습니다. inssa.club 을 사용하시면, 제 손땀 하나하나가 묻어나오는 패킷을 받으실 수 있었던 거죠... Watchfinder & Co./YouTube 개소리는 그만! 말도 안되는 소리는 여기까지만 하고, 지금 구축된 CI/CD 상황을 정리하자면 다음과 같습니다. 현재 상황 docker-stack을 활용해서, ec2위의 docker service들은 정의 / 실행 되고 있어요 각각의 서비스 (waitlist / clubhouse-profile)의 master에 push가 진행되면 다음의 작업들이 진행됩니다 테스트 코드 실행 도커 이미지 빌드 ghcr.io 에 업로드 de..
최근 친구와 시작한 사이드 프로젝트가 있습니다. 클럽하우스 프로필을 웹에서 조회 할 수 있도록 하는 프로젝트입니다. 개인적으로 이 프로젝트를 통해 처음 써본 기술이나 개념들이 많아서, 수동으로 배포를 마친 지금, 조금 뿌듯해서 어떤 기술을 썼는지, 왜 썼는지 적어보려고 합니다. 프로젝트 소개 프로젝트의 주소는 https://inssa.club 입니다. 다시 한번 설명하자면, 클럽하우스 프로필을 웹에서 조회 할 수 있도록 하는 프로젝트 입니다. 그래서 당신. 무슨 약을 하셨길래 22시간을 코딩한거야..? 당연히 22시간 연속으로 개발한 것은 아니고, wakatime에 찍힌 1일 코딩 시간 중 최장 시간을 기록한 날과 2위로 길게 코딩 한 날을 합쳐서 22시간이라고 했습니다. 먼저 인증부터 하겠습니다. 10..
기분 좋게 docker swarm으로 배포를 하려고 하는데, 문제가 발생했다. WAS 의 한 환경변수가 등록이 안되는것이었다! 그래서 두시간동안 삽질을 했다. 참고하길 바라며 글을 남긴다. 1. Docker Stack 에서는 .env를 지원하지 않는다. Docker Stack 에서는 .env를 지원하지 않는다. 그러니까, 우리가 흔히 하는 다음과 같은 사용이 되지 않는다는 것이다. ports: - "${PORTS}:8000" 그렇다. 만약 이런 상태로 실행하게 된다면, 해당 부분은 그냥 빈것으로 처리되어 실행된다. 그렇다면 어떻게 해야 할까? 답은 env_file 이다. 서비스 안에 env_file을 정의함으로써 .env 파일을 사용 할 수 있는데, 이는 다음과 같이 사용하면 된다. services: w..
https://sunrinsecurity.com 의 첨부파일들이 전부 사라졌다. 파일 업로드 부분의 테스트 코드를 바보같이 짜서 그랬다.. 파일 업로드 테스트 이후 업로드 된 파일들을 모조리 삭제하는데, 그게 프로덕션 미디어 폴더랑 같은 폴더여서, 테스트가 돌때마다 첨부파일이 사라지고 있던 것이었다. 아무튼, 열심히 파일을 복구해서 다시 서버에 파일을 복구했는데, 다운로드가 안되는것이다..! 엥..? 디버깅 뭐가 문젠지 모르겠어서 열심히 디버깅을 해 보았는데, 다음과 같은 결과를 얻을 수 있었다. 파일명이 영문이면 잘 다운로드가 된다 파일명이 한글이면 다운로드가 안된다 서버에 접속해서, 파일명이 한글인 친구들의 이름을 변경해보려 했는데 안되었다. 무엇을 잘 못 했는지 모르겠어서, 로컬(맥)에서 같은 환경..
잠시 redis.io를 들어가볼까요. Redis는 오픈소스(BSD License)이며, 데이터베이스로, 캐시로, 메시지 브로커로 사용되는 in-memory 자료구조의 저장소입니다. Redis는 string, hashes, list, set, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes, 그리고 streams와 같은 자료구조를 제공합니다. Redis는 내장된 복제(Replication) 기능, Lua 스크립팅, LRU 정책(LRU eviction), 트랜잭션, 그리고 여러 디스크를 사용한 여러 레벨의 영속성을 갖고 있으며, Rdis Sentinel과 Redis Cluster를 사용한 자동 파티셔닝을 통해 높은 가용성을 ..
리버스 프록시란? 일단 이 글을 읽을 사람이라면 리버스 프록시가 무엇인지 알고 있을것이라고 생각한다. 리버스 프록시가 뭔지 모르는데 리버스 프록시를 쓴다는게 말이 안되니까.. 쉽게 말해서 Nginx가 HTTP 요청을 받고, 그걸 다른 곳에 연결(프록시) 해주는 기능을 말한다. 이게 왜 리버스프록시 인지 설명하려면 글이 길어질테니, 읽는이의 수준을 감안하여 스킵하겠다. HTTPS 적용은 Let's encrypt를 사용하자! Nginx와 Let's Encrypt를 사용하면 손쉽게 HTTPS를 적용 할 수 있다. Nginx에서 사이트들의 설정파일을 담당하는 /etc/nginx/sites-available 에 내 서비스의 도메인(ex: mengmota.com)으로 파일명을 지정해놓고, 또 설정 파일안에서 ser..
개발을 하다보면 앱의 배경 색, 혹은 AppBar(뒤로가기 버튼이나 햄버거 버튼이 있는 바) 의 색을 바꿀 때 상단바의 색상도 변경하고 싶어진다. 위 두 사진을 보면, AppBar 위의 StatusBar (상단바) 아이콘 색상이 다른것을 확인 할 수 있다. 사실, 만약 저 StatusBar (상단바) 아이콘의 색상이 고정되어 있다면 큰 문제가 되지 않는다. 그렇게 되면 아래의 사진처럼 코드를 짜버리면 된다. main.dart 에서 MaterialApp의 옵션으로 primaryColor, brightness 와 관련한 옵션을 줄 수 있기 때문이다. 위의 사진처럼, Theme Parameter 에 ThemeData를 통해서 brightness를 지정함으로써 StatusBar (상단바) 의 아이콘 색상을 밝게..
mengmotaYeonGyu
'Computer Science' 카테고리의 글 목록 (2 Page)