Programming/etc.
-
RESTful API에 대하여Programming/etc. 2022. 5. 10. 22:43
Rest(Representational State Transfer)는 네트워크 아키텍처 원리의 모음이며 이 제약조건을 준수하는 애플리케이션 프로그래밍 인터페이스(API)를 뜻한다. = 일련의 지침 •6가지 제한 조건 1)인터페이스 일관성: 일관적인 인터페이스로 분리되어야 한다. 2)무상태(Stateless): 각 요청 간 클라이언트의 정보가 서버에 저장되어서는 안된다. 3)캐시 처리 가능(Cacheable): WWW에서와 같이 클라이언트는 응답을 캐싱 할 수 있어야 한다. 가):잘 관리되는 캐싱은 클라이언트-서버 간 상호작용을 부분적으로 또는 완전하게 제거하여 scalability(확장성)와 성능을 향상시킨다. 4)계층화(Layerd System): 클라이언트는 보통 대상 서버에 직접 연결되었는지, 또는..
-
Garbage Collector, Garbage Collection에 대하여Programming/etc. 2022. 3. 29. 23:20
가비지 콜렉터를 통하여 수집된 가비지 컬렉션은 스택 메모리 영역의 원시타입과 힙 메모리 영역의 참조타입 간의 차이를 고려하여 레퍼런스 카운팅, 메뉴얼 기법인 타임 베이스 혹은 이벤트 베이스 방식으로 수집되어 메모리에서 해제되게 된다. Garbage Collector: 메모리의 힙 영역에 할당 된 더 이상 사용되지 않는 객체를 제거하는 역할 Garbage Collection: 더 이상 필요없는 오브젝트, 참조하지 않는 오브젝트의 경우 가비지라 부르며, 수집이 가능하다. •래퍼런스 카운터를 이용하여 참조하는 오브젝트의 개수가 0이되면 수집한다. •순환 참조 되는 변수들은 메모리에서 해제가 되지 않으니(메모리 누수,릭) 특정 timeline(시간대) 안에서 참조가 안된 변수는 해제하는 방식도 있다. •Manu..
-
Twelve-Factor(트웰브 팩터) 방법론Programming/etc. 2022. 3. 28. 22:10
트웰브 팩터(Twelve-Factor App,방법론) 아래의 특징을 가진 SaaS 앱을 만들기 위한 방법론 1.설정 자동화를 위한 절차(declarative)를 체계화하여 새로운 개발자가 프로젝트에 드는 시간과 비용을 최소화한다. 2.OS에 따라 달라지는 부분을 명확히하고, 실행 환경 사이의 이식성을 극대화한다. 3.최근 등장한 클라우드 플랫폼 배포에 적합하고, 서버와 시스템의 관리가 필요없게 된다. 4.개발 환경과 운영 환경의 차이를 최소화하고 민첩성을 극대화하기 위해 지속적인 배포가 가능하다. 5.툴, 아키텍처, 개발 방식을 크게 바꾸지 않고 확장(scale up)을 할 수 있다. 트웰브 팩터 방법론은 어떤 프로그래밍 언어로 작성된 앱에도 적용 할 수 있고 백엔드 서비스(데이터베이스, 큐, 메모리 캐..
-
CDN에 관하여Programming/etc. 2022. 3. 18. 23:04
기업 면접을 진행하던 도중 CDN의 동작 원리에 대한 질문을 받게되었는데, 막상 동작 원리는 생각해 본 적이 없었다는 것을 깨닫게 되었고, 공부 한 뒤 기록을 남긴다. 우선 CDN은 Content Delivery Network의 약자이며, 사용자에게 콘텐츠를 전송하는 기술이다. 정통(精通)적인 의미에서의 원리는 전세계에 설치된 서버를 이용해서 웹 페이지, 비디오, 이미지 등의 콘텐츠를 프록시 서버에 캐싱해둔뒤 이러한 유저가 요청하면 가장 가까운 곳에 있는 서버에서 캐싱되어 있던 데이터를 전송하는 것이라고 할 수 있다. 이러한 CDN의 장점으로는 원리만 보아도 파악할 수 있듯이 1.요청에 대한 빠른 응답(성능) 2.데이터 제공의 안정성(가용성) 3.트래픽의 감소로 서버 비용 절감 4.악의적인 공격 방어(보..
-
CI/CD에 대한 이해Programming/etc. 2022. 2. 10. 21:09
CI / CD란, 지속적인 통합 및 배포는 신속하고 지속적인 소프트웨어 제공을 통한 고객 만족이라는 애자일 선언문(Agile Manifesto)의 12가지 원칙 중 첫번째 원칙이자 DevOps의 중요한 요소이기도 하다. 보통 DevOps에서 사용 되는 CI/CD의 경우 Monolithic Architecture(하나의 단일 시스템 구조) 보다 MSA(Micro Service Architecture, 모듈 느낌의 작은 시스템이 상호작용(API)하여 하나의 거대한 시스템을 이루는 구조)에 더 적합한 방식이라고 할 수 있는데, 구성된 마이크로 서비스 아키텍처에 API로 소프트웨어를 연결 하는 경우가 많다. 여기서 CI(Continuous Intergration; 지속적인 통합)은 애플리케이션의 코드가 변경 혹..
-
CORS(Cross-Origin Resource Sharing)에 대하여Programming/etc. 2022. 2. 10. 14:56
노드를 사용하여 백엔드를 구축하면 초반에 필히 셋팅 해주는 것 중에하나가 바로 CORS(Cross-Origin Resource Sharing)에 관한 것이다. 직역하면 교차 출처 자원 공유인데, 이는 추가 HTTP 헤더를 사용하여 어떠한 출처에서 실행 중인 웹 앱이 다른 출처에 선택한 자원에 접근 할 수 있는 권한을 부여하는 브라우저 체제이다. (출처:MDN 교차 출처 리소스 공유) 웹 앱은 리소스가 자신의 출처(프로토콜(https://),도메인(호스트,www.stackoverflow.com), 포트(:443))와 다를 때 교차 출처 HTTP 요청을 실행한다.(같으면 동일 출처(Same Origin)이다.) 이는 보안상의 이유로 브라우저가 스크립트에서 시작한 교차 출처 HTTP 요청의 제한으로 인한 것이..