Archive: 2023

데이터베이스의 인덱스

데이터베이스 인덱스데이터베이스도 컴퓨터의 하드 디스크(HDD, SSD)에 데이터를 쓰거나 적는다. 랜덤 IO와 순차 IO하드 디스크 드라이브에 접근하려면 플래터를 돌려서 데이터가 저장된 위치로 헤더를 이동시켜서 데이터를 읽는다. 랜덤 IO는 읽어야 할 데이터의 위치가 흩어져있어서 헤더를 여러번 이동해야 한다. 반면 순차 IO는 읽어야할 데이터의 위치를 딱

기자재 대여 예약 기능약 랩실 공간 대여 예약 기능으로 확장하기

문제 상황기리기리 프로젝트에서 기자재 대여 반납 기능을 중점적으로 개발하다가 광운대학교 미디어커뮤니케이션 랩실에서는 기자재 뿐만 아니라 랩실도 대여 반납을 할 수 있어야 한다는 피드백을 받았다. 문제는 랩실과 기자재 로직이 상당 부분 비슷하지만 랩실의 대여 로직이 기자재 대여 로직과 세세한 부분에서 다르다. 그러면 문제 상황을 여러 가지로 나눠서 해결해본다

서버 시간대에 의존하지 않는 데이터 구현하기

문제 상황기리기리 서비스는 대여 서비스라서 대여 기간과 실제 대여 수령 날짜, 대여 반납 날짜가 중요하다. 문제는 서버 시간대 설정에 따라 실제로 의도한 시간이 맞지 않을 수 있게 된다는 점이다. 그래서 서버를 한국 시간대로 모두 설정해주는 일이 필요하다. 이런 문제는 AWS EC2 인스턴스를 생성할 때 서버 시간대를 한국으로 적용하는 방식으로 해결할 수

광운대학교 학생 구성원 인증은 어떻게 할까?

문제 상황광운대학교 미디어커뮤니케이션 학부 기자재 대여 웹 서비스를 구현할 때 광운대학교 미디어커뮤니케이션 학생만 사용할 수 있도록 해야한다. 하지만 문제는 광운대학교에서는 Open API를 제공하지 않아서 학생 구성원을 어떻게 확인해야 할 지가 큰 문제였다. 개선 방법광운대학교 학습 전산 시스템인 klas에 가보면 개인번호 조회 기능이 있는 걸 발견했다.

페이징 방식에 의존하지 않는 페이지 API 설계하기

요약Rest API의 HATEOAS 원칙을 적용하면 페이징 방식에 의존하지 않는 API를 구현할 수 있다. 첫 페이지에 접근할 수 있는 API만 프론트엔드에게 알려주고 다른 페이지에 접근하는 API는 첫 페이지에 접근하는 API의 응답 데이터에 동적으로 담겨있게 하자. 그러면 페이징 방식 변경에 따른 프론트엔드 변경이 생기지 않는다. 문제 상황기리기리 서비

기자재 대여 데이터베이스 설계

프로젝트 소개기리기리 프로젝트는 광운대학교 미디어커뮤니케이션 학부 기자재 및 랩실 대여 관리 웹 서비스이다.기리기리 프로젝트는 다음과 같은 기능을 제공한다. 기자재 랩실 정보 조회 특정 날짜에 기자재 대여 가능 갯수 조회 대여 상태 관리 대여 취소 특정 날짜에 회원 관리 페널티 관리등등… 테이블 후보 찾기데이터베이스의 테이블이 될 후보를 찾아본다. 테

실전 자바 소프트웨어 개발을 읽고 재밌었던 부분 모음

실전 자바 소프트웨어 개발을 읽고 몇가지 재밌는 포인트를 적어본다. Q. 유지보수에 유리한 코드는 어떤 코드인가?특정 기능을 담당하는 코드를 빠르게 찾을 수 있어야 한다. 코드가 어떤 일을 수행하는 지 쉽게 파악할 수 있어야 한다. 새로운 기능을 추가하기 쉽고 기존의 기능을 제거하기 쉬워야 한다. 캡슐화가 잘 되어 있어야 한다. 사용자가 내부 구현을 몰라도

가상 면접 사례로 배우는 대규모 시스템 설계 - part 1

사용자 수에 따른 규모 확장성단일 서버 클라이언트가 도메인 이름으로 요청을 날릴 때 DNS를 통해 도메인 주소를 통해 웹 서버의 IP 주소를 얻을 수 있다. 클라이언트는 IP 주소로 HTTP 요청을 날린다. 웹 서버는 요청을 처리할 때 필요한 경우 데이터베이스에게 쿼리를 실행하도록 한다. 요청의 결과를 클라이언트에게 응답한다. 어떤 데이터베이스를 사용하

AWS Elastic Beanstalk에서 HTTPS 적용하기

문제 상황광운대학교 미디어 기자재 대여 웹 서비스 프로젝트에서 AWS Elastic Beanstalk(이하 EBS)를 활용해 CICD를 구현했다. 문제는 EBS를 활용한 인프라에서 HTTPS 프로토콜을 적용해야 하는 상황에서 발생했다. 우리 서비스의 EBS는 새 버전을 배포할 때 새로운 EC2를 생성해서 빌드된 파일을 배포하도록 했다. 보통 HTTPS 프로

클라우드 서비스의 인증과 보안 (HTTPS)

HTTPSAPI와 통신할 때 사용하는 프로토콜인 HTTP는 통신 내용을 평문으로 전달된다. 그래서 도청하면 내용을 그대로 알 수 있게 된다.HTTPS는 통신 내용에 보안이 중요한 내용을 다룰 때 사용되는 기술이다. HTTP over SSL/TLS이라는 의미다. HTTPS는 포트번호로 443을 사용한다.SSL/TLS는 OSI 참조모델에서 L

오케스트레이션

오케스트레이션과 오토메이션데브옵스 관점에서 오케스트레이션은 소프트웨어 개발의 자동화를 위해 태스크를 만드는 작업이다.데브옵스 관점에서 오토메이션은 CI 툴을 사용해서 빌드나 소스 코드 정적 검사를 자동화하는 작업이다. 일반적으로 오케스트레이션 및 오토메이션의 접근 방법은 두가지로 나뉜다. 프로그래밍 언어처럼 애플리케이션 설치나 설정 순서를 열거하고 절차형

클라우드에서 네트워크 리소스를 제어하는 방법

네트워크 리소스의 기본네트워크의 기능은 크게 L2 네트워크(OSI 참조 모델의 데이터링크 계층)과 L3 네트워크(OSI 참조 모델의 네트워크)로 나눠볼 수 있다.L2 네트워크는 같은 네트워크에 속한 장비를 연결한다. 대표적으로 스위치가 이런 역할을 한다.L3 네트워크는 서로 다른 L2 네트워크를 연결한다. 대표적으로 라우터가 이런 역할을 한다. 네트워크에서

클라우드에서 서버 리소스를 제어하는 방법

서버 리소스서버 리소스는 타입과 이미지로 구성된다.타입은 리소스의 크기나 속성을 유형화한 개념이다.이미지는 서버의 기동 이미지로 AWS의 AMI가 이에 해당한다. 서버 리소스 제어 API 흐름인증서버 리소스를 제어하기 위해서 가장 먼저 인증을 해야 한다.인증 요청은 POST로 회원이름과 암호를 보내고 토큰과 엔드포인트를 받는다. 이후 요청에서 헤더에 토큰을

IT 인프라의 진화와 API의 기본 철학

서버를 추가 구축해야 하는 상황에서 물리적 장비와 가상화 장비의 차이물리적 장비로 환경 구축하기웹 서버 요구사항을 수행할 수 있는 물리 장비를 발주해야 한다.장비가 도착하면 데이터 센터의 랙에 물리 장비를 장착해야 한다.이 과정에서 빈 공간이 있는 지, 네트워크 스위치 포트가 비어 있는 지, 네트워크 스위치까지 배선이 가능한 지, 전원 용량이 허용 범위 안

클라우드를 제어하는 API의 작동 방식

클라우드와 API의 관계APIAPI는 어떤 소프트웨어에서 다른 소프트웨어를 제어하기 위해 미리 약속된 인터페이스나 규약을 의미한다.API를 사용하면 내부 구조를 자세히 몰라도 다른 소프트웨어를 무리 없이 사용할 수 있다. 웹 API클라우드에서는 웹 API를 사용하는 것이 일반적이다.웹 API는 HTTP(HTTPS) 같은 웹 프로토콜을 사용해서 네트워크를 통