전체 글
-
[HTTP2 In Action] 1. http의 역사와 https책/HTTP2 In Action 2025. 2. 16. 23:31
해당 서적으로 스터디를 시작한지 2주가 되어간다.잊지 않기 위해 기록한다. 들어가기 전에!!리소스는 무엇인가?웹의 리소스는 인터넷상에서 고유하게 식별되고 액세스할 수 있는 모든 콘텐츠나 서비스를 의미한다.이 리소스에 고유하게 접근할 수 있는 식별자를 URI 라고 부르는데URN 과 URL 모두 URI 이다.요즘엔 URL 과 URI 를 혼용해서 쓰기도 한다.HTTP 는 무엇인가?HTTP 는 이름대로 하이퍼텍스트를 전송하기 위한 프로토콜이지만 다른 미디어들도 전송할 수 있다.따라서 사실상 HTTP 는 웹에서 데이터를 주고받기 위한 프로토콜이다.요청-응답 구조로 stateless 하다. HTTP 는 TCP/IP 가 제공하는 안정적인 네트워크 연결에 의존하는데 TCP/IP 는 OSI 모델의 여러 계층(둘 에서 세..
-
[프론트 배포] index.html 에 버저닝과 nginx 프록시로 브라우저 캐시문제 해결Infra 2025. 2. 2. 16:55
nginx 를 활용한 프론트 배포 시스템을 구축하였다. 내가 구축한 시스템구조는 다음과 같다. 우리는 B2C 인 특성 상 적은 트래픽에 많은 사이트를 운영하고 있어서 부하에 견디기 보다는 비용적인 이점을 더 챙기는 구조이다. 여기서 만약 한 서비스에 트래픽이 몰린다면 nginx를 제거하고 ELB 를 사용해서 다른 ec2 인스턴스를 생성하여 스케일 아웃을 하면 된다. 내가 이번에 겪은 문제는 프론트 빌드 결과물인 index.html 을 보면 이런 식이다. 이 때 저 css 와 js 를 가져오는 경로를 보면 https://ryeoryeo.com/css/style.css 와 https://ryeoryeo.com/js/javascript1.js 이렇게 요청하게 되는데 매번 저 위치로 새로 배포한 js 나 ..
-
[가상면접 사례롤 배우는 대규모 시스템 설계기초] 키-값 저장소 설계책/가상 면접 사례로 배우는 대규모 시스템 설계 기초 2025. 1. 12. 00:36
키-값 저장소는 비관계형 데이터베이스이다. 여기서 비관계형 데이터베이스라는 것은관계형과 다르게 스키마 없는 데이터를 관리하는 여러 종류의 데이터베이스들을 가리킨다. 이번에 정리할 키-값 저장소에 저장되는 값은고유 식별자를 키로 가져야 한다. 여기서 키는 일반 텍스트일 수도 있고 해시값일 수도 있다고 한다.보통 값은 무엇이 오든 상관 안한다고 하는데 문자열이나 리스트, 객체일 수 있다고 한다. 종류는 아마존의 다이나모, 레디스 같은 것들이 있다. 설계대규모 시스템에서 단일 시스템으로 키-값 저장소를 운영하는 것은 안좋다.가용성과 일관성 그리고 파티션 감내 모두를 잃는 것이다. CAP 정리cap는 일관성(consistency) 가용성(availability) 파티션 감내(partition tolerance)..
-
[회고] 24년 회고일상 2024. 12. 29. 15:51
올해는 너무 많은 일이 있었다... 힘들었지만 행복했다. ㅎㅎㅎ 있었던 일들을 정리하자면 개발1. 깃랩 복원하기2. 배포 시스템 단일 인스턴스에 도커 컨테이너 배포로 바꾸기3. 버츄얼 호스트로 비용 줄이기4. 키클락 구축하기5. 배포 및 환경 변수를 관리하는 웹 서비스 개발하기6. 프론트 배포 시스템 아마존 s3 웹서비스에서 nginx s3 프록시 컨테이너로 바꾸기 (gzip, http2 적용)7. cicd 파이프라인에 ecr 생성 및 route53 도메인 연결 과정 추가하기8. 멀티 모듈 프로젝트를 자동 설정해주는 데스크탑 앱 개발하기9. 배포 스크립트를 관리하는 깃랩 프로젝트 개발하기10. 아마존 RDS 제거하고 컨테이너로 디비 시스템 구축하기 (백업 , 프록시 , 모니터링)11. 엘라스틱 캐시 ..
-
[웹을 지탱하는 기술] 스터디 회고책/웹을 지탱하는 기술 2024. 12. 21. 16:00
회사에서 스터디를 하였고 오늘 마무리지었다. 애초에 이 스터디를 시작하게 된 계기가 매우 감사한데,내가 웹에 대해서 너무 모른다는 것이 그 이유였다..ㅠ감사합니다 ㅠㅠ 스터디 방식은 따로 읽어오지 않고정해진 1시간에서 40분 읽고 20분간 서로 질문하는 방식이었다. 이렇게 하니까 스터디 부담도 없고 질문거리와 답변할 내용을 생각하며 읽어서훨씬 더 집중하고 더 찾아보게 되어서 좋았다. 먼저, 내가 웹에 대해 잘 모르는 부분이 드러난 부분은웹의 캐싱이었다. 이 캐싱을 이해하기 위해서는 리소스가 무엇인지를 이해해야 한다. 리소스란 웹상에 존재하는 이름을 가진 모든 정보가 리소스다! 여기서 이름은 이 녀석을 특정할 수 있는 것이고리소스의 이름이란 URI 이다.URL 과 혼용하긴 한데URI 는 URN URL ..
-
[GitLab] 깃랩 CI/CD 캐시Infra/gitlab 2024. 12. 11. 18:43
깃랩은 배포 시의 캐시를 지원한다.여기서의 캐시는 파일 시스템에 저장이 되고프로젝트별로 관리가 되어캐싱할 부분은 매번 빌드하지 않고다시 사용하여 배포 시간을 단축시킬 수 있다. 필자는 깃랩 캐시를 사용해서 배포 시간을 줄였다. 캐시를 활용해서 4분 22초대였던 배포 시간을 줄일 수 있었다. 그럼 깃랩 캐시가 무엇인지 자세히 확인해보자. https://docs.gitlab.com/ee/ci/caching/ Caching in GitLab CI/CD | GitLabGitLab product documentation.docs.gitlab.com https://gitlab-docs.infograb.net/ee/ci/caching/ GitLab 공식 기술 문서 한글판 by 인포그랩 | 인포그랩 | GitLab ..
-
[OS] 뮤텍스와 세마포어는 무엇일까?CS/OS 2024. 12. 5. 23:43
이 개념들이 나오게 된 이유는 공유 자원에 대한 경합때문이다.여러 스레드가 동작을 할 때 한 공유 자원에 대해서 접근하게 된다면 데드락과 성능 저하 그리고 데이터 일관성을 잃을 수 있다. 뮤텍스와 세마포어는상호배체를 동기화 기법으로 구현한 것이다. 뮤텍스 뮤텍스는 락이다.Mutual Exclusion의 합성어이다.여래 개의 프로세스나 스레드가 공유 자원에 동시에 접근하지 못하게 하는 락이다. 한 번에 하나의 스레드만 자원을 사용할 수 있도록 보장한다자원을 사용하는 스레드가 잠금(lock)을 획득하고, 사용이 끝나면 잠금을 해제(unlock)한다잠금 또는 해제인 이진 상태만을 가진다. 자바 예시 코드를 클로드를 사용해서 작성해보았다. public class Mutex { private static i..
-
[Gitlab] 도커 컴포즈로 깃랩 구축 + 백업 + 복원 + 사용 사례Infra/gitlab 2024. 12. 3. 18:53
깃랩을 구축 및 사용법을 공유하려고 한다. 먼저 docker-compose 코드이다. version: '3.6'services: console: container_name: gitlab-console image: 'gitlab/gitlab-ce:14.7.3-ce.0' restart: always hostname: 'domain' environment: GITLAB_OMNIBUS_CONFIG: | external_url 'https://domain' gitlab_rails['backup_keep_time'] = 604800 gitlab_rails['gitlab_email_from'] = 'abcd@mail.com' gi..