본문 바로가기

CS

(9)
[CS] 분산형 버전 관리 vs 협업 플랫폼: Git과 GitHub의 차이와 활용법 [배경] 소프트웨어 개발에서 코드의 변경은 불가피합니다. 기능 추가, 버그 수정, 성능 최적화 등 다양한 이유로 코드가 끊임없이 수정됩니다. 이를 효율적으로 관리하기 위해서 버전관리가 필수적입니다. 여러 사람이 동시에 작업할 때나 프로젝트가 복잡해질 때, 코드의 변경 사항을 추적하고 관리하는 것이 필수적입니다.초기에는 CVS(Concurrent Versions System)나 SVN(Subversion) 같은 중앙 집중형 버전 관리 시스템이 사용되었으나, 분산형 버전 관리 시스템이 등장하면서 새로운 방식의 협업과 관리가 가능해졌습니다. Git은 이러한 분산형 버전 관리 시스템(DVCS, Distributed Version Control System)의 대표적인 예이며, GitHub는 이를 기반으로 한 협..
[CS] 초보 개발자도 이해할 수 있는 XSS, CSRF, CORS 보안 원리 [배경]  웹 애플리케이션은 인터넷을 통해 접근 가능하기 때문에 다양한 보안 위협에 노출됩니다. 웹 개발자는 이러한 위협을 인식하고 대응할 수 있어야 하며, XSS, CSRF, CORS는 그 중에서도 특히 흔하게 발생하는 공격 벡터입니다. 이러한 보안 취약점들은 사용자의 민감한 데이터에 접근하거나, 서버 리소스를 무단으로 조작하게 만들 수 있기 때문에 웹 애플리케이션의 신뢰성과 안전성을 심각하게 해칠 수 있습니다. 그래서 이번 글에서는 XSS, CSRF, CORS의 각각의 특징, 정의와 보안방안에 대해 알아보겠습니다.  [내용]먼저 HTTP 요청은 기본적으로 Cross-Site HTTP Request가 가능합니다. 즉, 태그로 다른 도메인의 이미지 파일을 가져오거나, 태그로 다른 도메인의 CSS를 가..
[CS] 테스트, 행동, 도메인: TDD, BDD, DDD로 이해하는 소프트웨어 개발 [개요] 소프트웨어 개발의 성공은 단순히 코드의 양에 달려 있지 않습니다. 개발 과정에서의 체계적인 접근과 지속적인 테스트가 중요합니다. 소프트웨어 개발의 복잡성이 날로 증가함에 따라, 더 나은 코드 품질과 유지보수성을 보장하기 위한 다양한 방법론이 등장했습니다. 그 중에서도 TDD(Test-Driven Development), BDD(Behavior-Driven Development), DDD(Domain-Driven Design)는 주목할 만한 접근 방식입니다. 이러한 요구를 충족시키기 위해 개발된 세 가지 주요 방법론으로, 각각 고유의 장점을 가지고 있습니다. 이번 블로그 포스트에서는 TDD, BDD, DDD의 차이점과 각 방법론이 제공하는 이점을 상세히 알아보겠습니다.  [내용]1. TDD의 정의..
[CS] 깨진 창문 이론과 소프트웨어 테스트 [배경]"깨진 창문 이론"을 들어본 적이 있나요? 이 이론은 작은 문제를 방치하면 큰 문제로 이어질 수 있다는 것을 의미합니다. 소프트웨어 개발에서도 마찬가지입니다. 작은 버그를 무시하면 결국 큰 문제로 발전할 수 있습니다. 이러한 상황을 방지하기 위해 필요한 것이 바로 단위 테스트와 통합 테스트입니다. 이 글에서는 이 두 가지 테스트 방법이 어떻게 우리의 소프트웨어를 튼튼하게 만드는지 알아보겠습니다.  [내용]1. 소프트 웨어 테스트  소프트웨어 개발 과정에서 테스트는 매우 중요한 단계입니다. 테스트를 통해 개발된 소프트웨어가 요구사항을 만족하는지, 버그 없이 잘 동작하는지 확인할 수 있습니다. 테스트 없이는 소프트웨어의 품질을 보장할 수 없으며, 이는 사용자의 신뢰도를 떨어뜨릴 수 있습니다. 테스트는..
[Web] 웹 서버 vs. WAS: 당신의 프로젝트에 맞는 서버는? [배경] 웹 서버와 WAS의 선택은 웹 애플리케이션의 아키텍처와 성능에 큰 영향을 미칩니다. 이 블로그에서는 두 서버의 장단점을 분석하고, 각각의 서버가 제공하는 기능과 특성을 비교합니다. 이를 통해 여러분의 비즈니스 요구에 가장 적합한 서버 환경을 선택하는 방법을 안내합니다.  [내용]웹 서버( Web Server )1. 웹 서버의 정의 웹 서버의 사전적 정의는 웹 브라우저 클라이언트로부터 HTTP 요청을 받아들이고 정적인 컨텐츠(.html .jpeg .css 등)를 제공하는 컴퓨터 프로그램입니다. 사전적 정의에서 조금 더 풀어쓰면, 웹 서버는 클라이언트가 웹 브라우저에서 어떠한 페이지 요청을 하면 웹 서버가 그 요청을 받아 정적 컨텐츠를 제공하는 서버입니다. 즉, 정적 컨텐츠는 단순 HTML 문서, ..
[DB] DB 관리의 혁신: 복제 DB, DB엔진 , 쿼리 최적화의 통합 전략 [배경] 데이터베이스의 신뢰성과 성능을 높이기 위해 복제 디비, 다양한 DB 엔진, 쿼리 최적화 기술을 이해하는 것은 필수적입니다. 복제 디비를 통해 데이터의 가용성을 높이고, 다양한 DB 엔진의 특성을 이해하여 최적의 엔진을 선택하며, 쿼리 최적화를 통해 성능을 극대화하는 방법을 이 블로그에서 자세히 알아보세요.  [내용]데이터베이스 복제(Replication)1. 데이터베이스 복제의 사용 이유 먼저 기본적인 데이터 베이스를 구성할 때에는 아래의 그림처럼 하나의 서버와 Database를 구성하게 됩니다. 하지만 사용자는 점점 많아지고  Database는 많은 Query를 처리하기엔 과부화가 오다 보니 서버를 늘릴 필요성을 느끼게 됩니다. 서버의 사양을 높이기엔 비용의 문제가 있고 같은 서버의 분산하여 ..
[DB] 파티셔닝 vs 샤딩: 데이터베이스 성능을 높이는 최적의 선택은? [배경] 효율적인 데이터베이스 설계는 애플리케이션의 성능을 극대화하는 데 핵심적인 요소입니다. 파티셔닝과샤딩, 클러스터링은 데이터베이스 성능을 향상시키고 확장성을 높이는 두 가지 주요 방법입니다. 특히, 대용량의 데이터 베이스의 최적화 하기에 필수적인 개념인데, 이 글에서는 데이터베이스 파티셔닝과 샤딩 그리고 클러스터링의 개념을 쉽게 설명하고, 각 기술의 장점을 활용하여 데이터베이스 성능을 최적화하는 방법을 소개합니다. [내용]파티셔닝 (Partitioning)1. 파티셔닝의 정의 용량이 큰 Table 이나 인덱스를 관리하기 쉬운 단위(partition)로 분리하는 방법입니다. 하나의 테이블에 많은 양의 데이터가 저장되면, 인덱스를 추가하고 테이블을 몇 개로 쪼개도 성능이 저하되는 경우일 때주로 사용됩니..
[DB] 데이터 베이스의 개념과 각각의 특징 [배경] 데이터 베이스는 IT에 대한 관심이 없어도 한번쯤은 들어봤고 다른 분야에서도 보편적으로 사용하는 용어가 되었습니다. 우리의 삶이 데이터베이스와 직/간접적으로 연관되어 있다고 생각해도 무방합니다. 데이터베이스가 대체 무엇이고 어떤 종류가 있기에 여기저기 모든 것에 연관되어 있고 비전공자까지 관심을 가지는지 데이터베이스의 개념과 각각의 특징, 장단점에 대해 알아보겠습니다.  [내용]1. 데이터 베이스의 정의 데이터 베이스란 어떤 특정한 조직에서 여러 명의 사용자 또는 응용 시스템들이 공유하고 동시에 접근하여 사용할 수 있도록 구조적으로 통합하여 저장한 운영 데이터의 집합입니다. 2. 데이터 베이스의 특징위의 정의를 지키기위해 데이터 베이스는 다음의 특징을 갖게 됩니다.query(질의)에 대하여 실시..