전체 글 105

[89일차]웹 서비스 풀사이클 개발의 이해: 프로세스부터 아키텍처까지

웹 서비스를 구축한다는 것은 단순히 코드를 작성하는 행위를 넘어선다. 요구사항 분석부터 배포, 그리고 유지보수에 이르는 전체 수명 주기(SDLC)를 이해하고, 이를 뒷받침하는 아키텍처와 연동 기술을 파악해야만 견고한 서비스를 만들 수 있다. 본 글에서는 웹 서비스 풀사이클 개발을 위한 핵심 이론을 소프트웨어 개발 프로세스, 아키텍처, 그리고 프론트엔드-백엔드 연동의 세 가지 관점에서 정리한다.1. 소프트웨어 개발 프로세스 (SDLC)소프트웨어 개발 프로세스는 품질 향상, 일정 준수, 명확한 의사소통, 그리고 궁극적으로 고객 만족도를 높이기 위한 필수적인 체계다.Shutterstock1.1 요구사항 수집 및 분석모든 개발의 시작점이다. 이해관계자의 요구사항을 수집하고, 이를 기능/비기능 요구사항으로 분류하..

Programmers 2026.01.27

[88일차]클라우드 컴퓨팅의 이해와 마이크로서비스 아키텍처

현대 IT 인프라의 표준이 된 클라우드 컴퓨팅은 단순한 서버 임대 서비스를 넘어 소프트웨어 아키텍처와 개발 방법론 전반에 영향을 미치고 있다. 본 글에서는 클라우드 컴퓨팅의 등장 배경과 핵심 원칙, 그리고 이를 기반으로 한 마이크로서비스 아키텍처(MSA)의 개념을 정리한다.1. 컴퓨팅 패러다임의 변화클라우드 컴퓨팅이 등장하기까지 컴퓨팅 환경은 하드웨어와 네트워크 기술의 발전에 따라 진화해왔다.메인프레임(Mainframe): 1960~70년대의 거대한 중앙 컴퓨터 시대를 의미한다. 터미널(Terminal)을 통해 중앙 서버에 접속하는 방식이었으며, 시분할 시스템(Time Sharing System)을 통해 다수의 사용자가 하나의 자원을 나누어 썼다.클라이언트-서버(Client-Server): PC의 보급과..

Programmers 2026.01.26

[87일차]연결의 기술과 만드는 철학: 네트워크 & 소프트웨어 공학

컴퓨터 과학(CS)의 세계에서 하드웨어와 운영체제가 '개인'을 위한 기초라면, 네트워크는 개인과 개인을 연결하는 '사회'이고, 소프트웨어 공학은 그 위에서 가치를 창출하는 '건설 철학'이다. 이번 글에서는 데이터가 흐르는 길인 네트워크의 원리와, 견고한 소프트웨어를 만드는 공학적 방법론에 대해 정리한다.1. 컴퓨터 네트워크: 데이터가 흐르는 길네트워크는 단순히 선을 연결하는 것이 아니라, 서로 다른 시스템이 대화할 수 있도록 규칙(Protocol)을 정하는 과정이다.1.1 통신망의 기초디지털 시대에 우리는 왜 디지털 신호를 선호하는가? 아날로그는 외부 간섭에 약하지만, 디지털(0과 1)은 정보를 복구하기 쉽고(적은 정보 손실), 수학적 연산을 통해 암호화가 용이하기 때문이다.데이터를 전송하는 방식에는 여..

Programmers 2026.01.23

[86일차]하드웨어부터 데이터까지: 컴퓨터 구조, OS, 그리고 데이터베이스

지난 글에서 정보의 표현과 논리 회로라는 가장 기초적인 단위를 다루었다면, 이번에는 그 위에서 돌아가는 거대한 시스템을 조망해본다. 컴퓨터 하드웨어의 설계 원칙(컴퓨터 구조), 하드웨어를 효율적으로 관리하는 소프트웨어(운영체제), 그리고 현대 서비스의 핵심인 데이터 관리(데이터베이스)까지, 개발자가 반드시 알아야 할 시스템의 뼈대를 정리한다.1. 컴퓨터 구조의 설계와 구현컴퓨터는 마법 상자가 아니다. 철저하게 계산된 공학적 설계물이다.1.1 하드웨어의 핵심: CPU와 ISA컴퓨터의 두뇌인 **CPU(중앙처리장치)**는 크게 세 부분으로 나뉜다. 연산 순서를 제어하는 제어장치(Control Unit), 실제 계산을 담당하는 ALU(산술논리연산장치), 그리고 연산 데이터를 잠시 저장하는 초고속 메모리인 **..

Programmers 2026.01.22

[85일차]컴퓨터의 언어부터 설계까지: 정보의 표현과 구조적 이해

개발자로서의 성장은 코드를 '작성'하는 것에서 멈추지 않고, 코드가 '동작'하는 원리를 이해하는 데서 시작된다. 단순히 라이브러리나 프레임워크를 사용하는 것을 넘어, 컴퓨터가 데이터를 어떻게 이해하고 처리하는지, 그리고 그 하드웨어적인 설계가 소프트웨어에 어떤 영향을 미치는지 파악하는 것은 매우 중요하다.이 글에서는 CS 지식의 가장 밑바닥이라 할 수 있는 정보의 표현과 컴퓨터의 설계 원리에 대해 깊이 있게 다뤄보고자 한다.1. 기초를 공부해야 하는 이유왜 우리는 당장 실무에 쓰이지 않을 것 같은 0과 1, 그리고 하드웨어 구조를 배워야 할까?첫째, 소통의 비용을 줄이기 위함이다. 엔지니어 간의 대화에서 '오버플로우(Overflow)', 'MSB', '부동소수점 오차' 같은 용어는 현상을 설명하는 가장 ..

Programmers 2026.01.21

[84일차]모니터링 시스템과 전체 회고

웹 기반 문서 편집기 프로젝트를 진행하며 기능 구현뿐만 아니라 안정적인 운영을 위한 DevOps 환경 구축에도 힘썼다. 특히 CI/CD 파이프라인의 상태를 실시간으로 확인하고, 애플리케이션이 구동되는 쿠버네티스 클러스터의 리소스를 시각화하는 과정은 서비스의 신뢰성을 높이는 핵심 단계였다. 이번 포스팅에서는 파이프라인 알림 설정과 클러스터 모니터링 구축 과정을 정리한다.1. 파이프라인 모니터링 (Pipeline Monitoring)개념 및 필요성CI/CD 파이프라인 모니터링은 빌드, 테스트, 배포의 전 과정이 성공적으로 수행되었는지, 혹은 어느 지점에서 실패했는지를 개발자가 즉각적으로 인지할 수 있도록 돕는 시스템이다.개발자가 매번 젠킨스(Jenkins) 대시보드에 접속해 빌드 상태를 확인하는 것은 비효율..

Programmers 2026.01.19

[83일차]AWS 클라우드 기반 Jenkins CI/CD 파이프라인 구축 및 자동화

1. 클라우드 인프라 도입 배경 및 AWS 활용 계획클라우드 도입은 초기 하드웨어 투자 비용을 절감하고 자원을 유연하게 확장할 수 있는 장점이 있다. 그러나 자원 관리 소홀 시 과도한 비용 발생 및 클라우드 사업자에 대한 의존이 단점으로 작용할 수 있다. EC2 (Elastic Compute Cloud)EC2는 Jenkins Master와 각 Agent를 구동하는 가상 서버로 사용된다. 워크로드에 따라 인스턴스 사양을 변경하여 성능과 비용의 최적화를 구현한다.AMI (Amazon Machine Image)AWS AMI를 통해 OS, 라이브러리 및 환경 설정 상태를 이미지로 보관한다. 이를 통해 서버 장애 시 즉각적인 복구가 가능하며 동일한 환경에서 모든 Agent가 동작하도록 보장한다.ECR (Elast..

Programmers 2026.01.16

[82일차]Selenium 개요 및 구성 요소 및 테스트 예시

Selenium은 웹 브라우저 자동화를 위한 오픈소스 프레임워크이다. 주로 웹 애플리케이션의 테스트 자동화에 사용되며, 웹 기반의 반복적인 행정 업무 자동화 등 브라우저 제어가 필요한 다양한 영역에 활용될 수 있다. Selenium은 크게 세 가지 주요 구성 요소로 이루어진다.1.1. Selenium WebDriver여러 브라우저(Chrome, Firefox, Safari, Edge 등)를 제어할 수 있는 언어별 라이브러리를 제공한다.개발자는 이를 통해 직접 코드를 작성하여 브라우저의 동작을 세밀하게 제어할 수 있다.1.2. Selenium IDE브라우저에서의 사용자 상호작용을 녹화하고 재생할 수 있는 도구이다.Chrome이나 Firefox의 확장 프로그램 형태로 설치하여 별도의 코딩 없이 테스트 케이스..

Programmers 2026.01.15

[81일차]웹 기반 문서 편집기 제작 프로젝트 - 단위 테스트

백엔드(BE) 단위 테스트단위 테스트는 개별 함수나 메서드를 독립적으로 검증하는 과정이다. 모듈 간 의존성이 존재하는 경우 Mock(가짜 객체)을 사용하여 테스트 대상을 분리해야 한다.테스트 재현성 확보Makefile을 사용하여 테스트 실행 절차를 자동화한다.주의사항: Makefile은 들여쓰기에 반드시 Tab을 사용해야 하며, Space 사용 시 문법 에러가 발생하므로 편집기 설정을 확인해야 한다.테스트 범위요구사항 명세서에 정의된 모든 API에 대한 정상 동작 검증.잘못된 URL 요청 및 권한 없는(Unauthorized) 접근에 대한 예외 처리 검증.프런트엔드(FE) 단위 테스트프런트엔드 테스트는 사용자 인터페이스(UI)와 사용자 경험(UX)을 포함하므로 백엔드와는 다른 접근 방식이 필요하다.주요 ..

Programmers 2026.01.14

[80일차]웹 기반 문서 편집기 제작 프로젝트 설계

📄 BE 설계📑 구조 설계서구조 설계서는 소프트웨어의 구조를 설계하여 기술한 문서이다. 이 문서는 사용 도구와 도구의 버전, 패키지 구조 설정 방법 등을 다룬다.주요 내용도구 및 도구의 버전: 프로젝트에서 사용할 도구들과 그에 따른 버전을 정의한다.패키지 구조: 패키지 구조를 설계 및 설명한다.세팅: 프로젝트 초기화 및 기본 설정 과정을 다룬다.라우터: 경로 관리와 라우팅을 담당하는 구조를 정의한다.모델: 데이터베이스와의 상호 작용을 담당하는 모델을 설계한다.유틸: 공통적으로 사용될 유틸리티 함수들을 정의한다.미들웨어: 요청과 응답 사이의 작업들을 처리하기 위한 미들웨어를 정의한다.📑 데이터베이스 설계프로덕션용(실제 운영) 데이터베이스와 로컬 테스트용 데이터베이스를 명확히 구분하여 사용해야 한다.?..

Programmers 2026.01.12