프로그래밍 언어는 코드를 실행시키는 방식에 따라 크게 두 가지로 나뉩니다.
| 구분 | 스크립트 언어 (Script Language) | 컴파일 언어 (Compile Language) |
|---|---|---|
| 기본 정의 | 스크립트를 통해 소프트웨어를 제어하는 언어. 코드 수정이 잦은 환경에 효율적 | 소스 코드를 기계어로 변환(컴파일) 하여 실행하는 언어 |
| 실행 방식 | 한 줄씩 인터프리터 방식으로 실행 | 전체 코드를 미리 컴파일하여 실행파일 생성 |
| 대표 예시 | JavaScript, Python, JSP, jQuery | C, C++, Java |
| 오류 확인 시점 | 실행 중 오류 발생 시 확인 가능 | 컴파일 시점에 오류 감지 가능 |
| 실행 속도 | 실행 시 매번 번역 → 상대적으로 느림 | 미리 컴파일된 코드 실행 → 빠름 |
| 문법 난이도 | 단순하고 간결함 | 규칙이 많고 복잡함 |
| 보안성 | 코드가 노출될 가능성 높음 | 기계어 실행 → 유출 어려움 |
| 적합한 용도 | 빠른 개발, UI/UX 중심 애플리케이션 | 대규모, 성능 중심 프로그램 |
1️⃣ 문법이 단순하고 배우기 쉬움
2️⃣ 컴파일러 없이 한 줄씩 해석하므로 번역속도 빠름 (단, 실행 속도는 느릴 수 있음)
3️⃣ 실행하며 오류를 파악해야 함
4️⃣ CPU 사용량이 많아 복잡한 연산에는 비효율적
1️⃣ 문법 규칙이 엄격하며 학습 난이도가 높음
2️⃣ 대형 프로젝트의 경우 컴파일 시간 증가
3️⃣ 한 번 컴파일 후에는 실행속도가 매우 빠름
4️⃣ 기계어로 동작하기 때문에 보안성이 높음
소프트웨어가 탄생부터 종료까지 거치는 전 과정
| 단계 | 이름 | 설명 |
|---|---|---|
| 1️⃣ | 요구사항 분석(Requirement Analysis) | 고객의 요구를 파악하고, 목표와 기능 정의 |
| 2️⃣ | 설계(Design) | 요구사항을 바탕으로 시스템 구조, DB, UI/UX 설계 |
| 3️⃣ | 구현(Implementation) | 설계문서를 기반으로 실제 코드 작성 |
| 4️⃣ | 테스트(Testing) | 오류 검증 및 품질 확인, 기능 검증 단계 |
| 5️⃣ | 배포(Deployment) | 실제 서비스 환경에 시스템 반영 |
| 6️⃣ | 유지보수(Maintenance) | 버그 수정 및 기능 향상, 환경 변화 대응 |
💡 SDLC는 단순 개발이 아닌 "지속 가능한 소프트웨어 개발 체계" 를 만드는 것이 핵심입니다.
Java 기반 백엔드 개발을 위한 통합적인 프레임워크 모음
Spring 생태계는 각기 독립된 프로젝트이지만, DI, IoC, AOP라는 핵심 원칙을 공유합니다.
| 구성요소 | 설명 |
|---|---|
| Spring Framework | 스프링의 핵심 기반. IoC/DI를 통해 객체를 관리하는 컨테이너 역할 |
| Spring Boot | 복잡한 설정을 제거하고 빠른 애플리케이션 빌드 지원. 내장 웹서버 포함 |
| Spring Data | 데이터베이스 접근을 일관되게 처리하는 데이터 계층 기술 |
| Spring Security | 인증(Authentication) \& 인가(Authorization) 등 보안 기능 제공 |
| Spring Cloud | MSA (Microservice Architecture) 환경 구축 지원. 각 서비스 연결 관리 |
| Spring Batch | 대용량 데이터 처리 및 정기적 배치 작업(정산, 통계)에 특화된 모듈 |
| 핵심 철학 | 설명 |
|---|---|
| 느슨한 결합 (Loose Coupling) | 필요한 프로젝트만 선택하여 연결 가능 |
| 높은 확장성 (High Scalability) | 독립적인 프로젝트 업데이트로 유연성 확보 |
| 공통 설계 원칙 공유 | DI, IoC, AOP 등 핵심 개념을 전 생태계가 공유 |
🏗️ 즉, 한 프로젝트를 익히면 다른 스프링 기반 프로젝트도 쉽게 적응 가능!
1️⃣ 프로젝트 맞춤형 조립 가능성
→ 필요한 기능만 선택적으로 사용 가능
2️⃣ 유연한 확장 구조
→ 부분 업데이트 및 기능 교체 용이
3️⃣ 공통 철학 기반의 일관성
→ 개발 생산성 향상 및 러닝 커브 감소