본문 바로가기

분류 전체보기273

[DevOps] CI(지속적인 통합, Continuous Intergration) 1. 지속적인 통합 메커니즘 - CI는 개발자가 체크인하는 경우 다음 방법 중 하나로 검증하는 소프트웨어 엔지니어링 실천방법이다. 1) Pull Mechanism : 예정된 시간에 자동화된 빌드 작업을 실행한다. 2) Push Mechanism : 변경 사항이 저장소에 저장되는 경우 자동화된 빌드가 실행된다. - 이 단계에서는 소스 코드 저장소에서 이용 가능한 최신 변경사항에 대한 단위 테스트의 실행이 뒤따른다. - 빌드-테스트-통보 : 돌고 도는 파이프라인이 구성된다. 빌드 실행 결과에 기반한 빠른 피드백이 핵심이다. - CI의 필요성 : 개발의 초기단계에서 보완하고 고칠 수 있는 파이프라인 생성, 같은 이슈가 매우 오랜 기간 후에 발생하고 의존성과 복잡성이 증가했을 때 발생한다면, 고치기 어려워진다... 2023. 4. 10.
[O'REILLY] Node & Express - 14장 : 라우팅(Route) - 라우팅은 웹서비스에서 중요한 요소 중 하나이다. - 라우팅은 보통 파일 기반으로 운영된다. - 단순하지만 유연하지 않다. - 익스프레스 라우팅의 기술적인 측면에서는 정보구조(Information Architecture, IA) 의 개념을 알아야 한다. - IA는 콘텐츠를 개념적으로 구조화 하는것. - IA는 즉, 콘텐츠를 주의깊게 분류하고, 논리적으로 분류하고, 스스로 코너에 몰리지 않도록 하는 개념적 방법론이다. 1. 오랫동안 유지할 수 있는 IA의 수립 조건 - URL에 기술적 세부사항을 노출하지 않는다 - URL에 의미없는 정보를 노출하지 않는다. : 의미 없는 단어가 있다면 제거한다. - 의미 없이 긴 URL은 피한다. : 다른 조건이 모두 같다면, 짧을수록 좋다. 하지만 SEO도 명심해야 한.. 2023. 4. 10.
[O'REILLY] Node & Express - 13장 : 지속성(Persistence) - 웹과 앱에는 어떤 형태든 지속성이 필요하다. - 데이터를 메모리가 아닌 다른 형태로 저장해서 서버 다운, 정전, 업그레이드, 이전 등의 상황에서도 데이터를 유지할 수 있어야 한다. 1. 파일시스템 지속성 - 지속성을 획득하는 방법 중 하나는 데이터를 플랫 파일에 저장하는 것 - 플랫이란 ? : 파일에 특별한 구조가 없이 그저 바이트의 연속 - 노드는 fs(파일시스템) 모듈을 통해 파일시스템의 지속성을 제공한다. - 파일시스템 지속성의 단점 : 확장이 어렵다. 플랫 파일에는 구조가 없으므로, 찾기, 정렬, 필터링 기능을 모두 앱에서 구현해야 한다. - 그러므로 데이터는 DB를 이용하는 것이 좋다. 다만, 이미지/오디오/비디오같은 이진 파일은 파일시스템이 더 효율적이다. - 이진 파일에 관한 정보는 보통.. 2023. 4. 10.
[O'REILLY] Node & Express - 12장 : 실무 환경 - 2 1. 예외처리 - 노드는 비동기적이므로, 항상 예외처리에 신경을 써줘야 한다. - express는 라우트 핸들러를 실행할 때 try/catch 블록으로 감싸므로 실제로는 잡히지 않는 예외란 없다. - 모든 라우트에 오류 핸들러를 추가해서 '보기 좋은' 오류 페이지를 만들어줄 뿐이다. - 항상 에러페이지를 만들어두어야 대응을 잘 할 수 있다. - 더 심각한 상황을 가정해보자. - 이렇게 하면 서버 전체가 다운된다. 사용자에게 에러메시지를 보내고 자시고 없고 서버가 다운되면서 어떠한 처리도 불가능하게 된다. - 이 문제는 setTimeout이 비동기적으로 실행되기 때문이다. 함수 실행은 노드가 유휴상태가 될 때 까지 지연된다. - 노드에서 앱의 안정성을 파악하지 못한다면, 예상하지 못한 예외처리가 불가능하여.. 2023. 4. 8.
[DevOps] 용어정리 : 인프라스트럭쳐, 프로비저닝 1. 인프라스트럭쳐(Infrastructure) - 인프라스트럭쳐(Infrastructure)란 기본적인 시설과 서비스를 의미합니다. - 일반적으로 교통, 통신, 배수, 에너지 공급 등과 같은 기반 시설을 가리키며, 이들은 경제 활동과 사회 발전을 지원하는 데 필수적입니다. - IT 산업에서 인프라스트럭쳐는 하드웨어, 소프트웨어, 네트워크 등의 기술적인 구성 요소를 포함하며, 이들은 컴퓨팅 시스템의 핵심 기능을 제공합니다. 2. 프로비저닝(Provisioning) - 프로비저닝(Provisioning) 은 IT 관리에서 자원의 할당 및 배포를 관리하는 과정을 의미합니다. - 프로비저닝을 통해 사용자의 요구에 맞게 컴퓨터, 네트워크, 스토리지, 소프트웨어 등의 자원을 구성하고 배포합니다. - 프로비저닝의 .. 2023. 4. 7.
[DevOps] DevOps의 이해 1. DevOps의 이해 - 데브옵스는 기술적인 부분만 이야기하지 않는다. - 데브옵스는 문화이자 개발과 운영철학, 운동이다. - 개발팀, QA팀, 운영팀 각각의 목표와 목적이 다르고, 우선순위가 다르므로 다양한 문제가 발생한다. - 조직에서는 다양한 문제와 직면해있다. 예를 들면, 빠른 배포요구, 자동화 구축, 모니터링 프로세스의 구축, 변경사항 관리의 표준화, 빠르게 변경사항 구현 및 전달 2. 폭포수 모델 - 소프트웨어 개발을 위해 순차적인 앱 설계 프로세스를 따른다. - 좋은 통제 수단을 갖지만, 수정능력이 부족하다. - 목적 기반의 개발 방법론이다. - 내용 : 요구사항분석 -> 설계 -> 개발 -> 테스트 -> 배포 -> 유지/보수 - 장점 : 이해가 쉽다, 관리가 쉽다, 순차적 프로세스다(순.. 2023. 4. 7.
[Algorithm] 완전탐색 (JS) - 3 : 비트마스킹(Bitmasking) - 나올 수 있는 모든 경우의 수가 둘 중 하나로부터 나오는 경우 유용하게 사용할 수 있다 1. 비트마스킹이란 ? - 정수 값을 이진 비트로 표현하여 비트 단위 연산을 사용해 특정한 작업을 수행하는 기법 - 웹에서는 플래그, 설정, 퍼미션 등을 효율적으로 관리할 수 있다. - 일반적으로 비트 연산자(AND, OR, XOR, NOT, SHIFT)를 사용한다. - React에서 비트마스킹을 사용하여 여러 설정 옵션을 관리할 수 있다. - '&' 는 비트 AND 연산자로, 각 정수의 이진표현에서 같은 위치에 있는 비트를 비교하여 두 비트가 모두 1인 경우에만 결과의 해당 위치의 비트를 1로 설정한다. - 예를 들어, 5 & 4 는 0101 과 0100의 비트AND연산을 시행하면 0101 0100 0100 (답.. 2023. 4. 6.
[O'REILLY] Node & Express - 12장 : 실무 환경 1. 실행 환경 - 실행환경이란 ? : 애플리케이션을 실무, 개발, 테스트 모드로 실행하는 방법. - 개발, 실무, 테스트 세가지가 '표준' 환경이며, 스테이징, 연습환경도 만들 수는 있다. - 익스프레스는 실행환경을 지원한다. - app.set('env', 'production') 을 호출해서 실행 환경을 지정할 수 있지만 권장하지 않는다. - 실행환경을 지정할 경우에는 NODE_ENV를 사용하는 것이 더 좋다. - app.get('env')를 호출해서 현재 실행 중인 모드를 보고하게 만든다. - 실무 모드로 바꾸는 방법: 터미널에 이렇게 친다. $ export NODE_ENV=production $ node 파일명 - node 파일명으로 서버를 실행시키면 'Express started in produ.. 2023. 4. 5.