반응형
반응형

📝셸 (Shell)

셸은 운영 체제와 사용자 사이의 인터페이스를 제공하는 프로그램으로 CLI라고 생각하면 됩니다

 

📝셸 스크립트 (Shell Script)

셸 스크립트는 셸에서 실행되는 스크립트 언어로, 여러 명령어를 순차적으로 실행하는 프로그램으로 간단히 이야기하면 셸에서 인식하는 스크립트 언어로 코딩을 한다고 생각하시면 됩니다

해당 스크립트 언어로 만들어진 다양한 언어들이 존재합니다 → 본셸(Bourne Shell), 콘셸(Korn Shell), C셸

    

📝본셸 (Bourne Shell)

유닉스 운영 체제에서 사용되는 초기 셸 스크립트 언어입니다

 

📝콘셸 (Korn Shell)

콘 셸은 본 셸의 대안으로 개발된 셸이며 C 프로그래밍 언어와 유사한 문법을 가지고 있습니다

    

📝C셸 (C Shell)

C 셸은 유닉스 시스템에서 사용되는 셸 중 하나로, 콘 셸과 본 셸의 대안으로 사용됩니다

 

📝배쉬셸 (Bash Shell)

배쉬 셸은 본 셸의 확장된 버전으로, GNU 프로젝트의 일환으로 개발되었습니다

 

📝CURL

서버와 통신할 수 있는 커맨드 명령어 툴로 DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, Telnet, TFTP 또한 SSL 인증 방식 역시 가능합니다 즉, URL을 가지고 할 수 있는 것들은 다할 수 있다

 

  • HTTP 프로토콜을 이용해 웹 페이지의 소스를 가져온다거나 파일을 다운받을 수 있다
  • FTP 프로토콜을 이용해서는 파일을 받을 수 있을 뿐 아니라 올릴 수도 있다
  • 심지어 SMTP 프로토콜을 이용하면 메일도 보낼 수 있다

 

📝탑다운 (Top-Down)

전체 시스템 또는 소프트웨어를 큰 블록이나 모듈로 나누고, 상위 수준의 모듈부터 시작하여 세부 사항을 차례로 구현해 나가는 개발 방법

 

  1. 요구 사항 분석 → 전체 시스템의 요구 사항을 정의하고 분석합니다.
  2. 시스템 설계 → 시스템의 큰 틀과 모듈 간의 관계를 설계합니다.
  3. 모듈 설계 → 상위 수준 모듈부터 시작하여 각 모듈의 상세 설계를 수행합니다.
  4. 코딩 및 구현 → 설계된 모듈을 구현하고 코드를 작성합니다.
  5. 테스트 → 각 모듈 또는 시스템 전체를 테스트하여 기능이 올바르게 작동하는지 확인합니다.
  6. 유지보수 → 필요한 경우 수정이나 개선을 수행합니다.

 

📝다운탑 (Down-Top)

세부 사항이나 작은 모듈부터 시작하여 전체 시스템이나 소프트웨어를 완성해 나가는 방법입니다 주로 구현과 테스트 단계에서 사용됩니다

 

  1. 세부 사항 구현 → 전체 시스템이나 모듈의 작은 부분부터 구현을 시작합니다.
  2. 모듈 테스트 → 각 세부 모듈을 개별적으로 테스트하여 정상 작동을 확인합니다.
  3. 상위 수준 통합 → 구현된 세부 모듈을 조합하여 상위 수준의 모듈 또는 시스템을 통합합니다.
  4. 테스트 및 디버깅 → 통합된 시스템을 테스트하고, 필요한 경우 버그를 수정하고 디버깅을 수행합니다.
  5. 유지보수 → 필요한 경우 수정이나 개선을 수행합니다.
반응형
반응형

📝프록시

대리라는 의미로 네트워크에서는 보안상 이유로 직접 통신할 수 없을 경우 그 사이에 중계 역할을 해주는 서버를 말합니다.

 

📝SSL

HTTP 통신을 안전하게 하기 위한 프로토콜로 만들어진게 SSL입니다

SSL은 암호화 통신을 위해 대칭키, 비대칭키 방식을 혼용하여 사용합니다.

이것은 공개키, 개인키를 활용하는 SSH 통신의 원리와 거의 같은 방식입니다.

차이점은 SSL 통신에는 디지털 인증서가 필요하다는 점입니다.

HTTPS도 SSL 프로토콜을 이용한 서비스 중 하나라고 이해됩니다.

 

HTTPS 로 접속했는데 아래와 같은 화면이 나타났다면 서버에 인증서는 설치되어 있되, 공인기관의 인증서가 아닙니다

웹사이트는 공인된 CA에게 인증서를 발급받으려면 일정요건을 갖추고 서비스 신뢰성을 평가받은 후 비용을 지불해야

해당 CA로 부터 인증서를 발급 받을 수 있습니다.

 

 

📝도메인

웹페이지를 접근하기 위한 주소를 의미한다 → https://192.168.0.40:7100 또는 https://www.naver.com

 

📝별칭

서버간 기능을 호출하기 위한 것 → 보안상의 문제로 그렇게 한다고 한다

예) 110.111.11.11:7521 (x) dangyo.com (o)

 

📝VPN

프록시와 동작방식이 유사하고 VPN이라는 서버(하드웨어 장치)를 거쳐서

암호화되어 전송되기 때문에 보안 문제까지 케어할 수 있습니다.

 

📝망분리

네트워크 환경에서 보안을 강화하기 위해 네트워크를 여러 부분으로 나누는 것을 의미

 

📝인트라넷

인터넷에 사용하는 회선 및 기술을 이용하여 구축한 사설 네트워크

흔히 군대에서 이용하는 외부 사이트에 접속 제한이 걸려있는 인터넷을 인트라넷이라고 한다

→ LAN + 인터넷 제한 망

 

📝WAN

광대역 네트워크로 두 개 이상의 LAN 영역을 연결한 영역

LAN 영역에 포함되어 있지 않은 멀리 떨어진 컴퓨터 사이에서도 WAN을 통하여 서로 통신이 가능하다

 

📝내부망

공인 IP는 한개인데 거기에서 쪼개서 망을 구축할 수 있다 간단하게 이야기하면 사설IP를 말한다

 

📝외부망

A라는 회사가 서비스를 만들어 웹으로 제공해주면 A라는 회사는 자기 내부망을 제외한 모든 것들이 외부망으로 취급된다 간단하게 이야기하면 공인 IP들의 집합이라고 할 수 있다

 

📝DMZ

외부에 서비스 제공 시 내부 자원을 보호하기 위해 내부망과 외부망 사이에서  접근제한을 수행하는 영역을 말합니다.

 

네트워크 사이에 DMZ 라는 구간을 두어 서버의 침입으로부터 내부 네트워크를 보호할 수 있습니다.

보통 DMZ에는 외부 공격자의 침입으로부터 안전하게 보호되어야 하는 메일 서버, 웹 서버, DNS 서버 등이 위치

  

 

 

반응형
반응형

📝PMO (Project Management Office)

어떤 프로젝트에 직접 참여하여 실무하는 것이 보는게 아닌 전체 프로젝트를 관리하는 포지션

 

📝PM (Project Manager)

프로젝트 총 책임자 의견 조율 및 일정관리 이슈관리 등을 함

 

📝PL (Project Leader)

PM 보조역할로 팀 리더 역할을 수행하고, 팀 내 업무 배분, 일정 관리 등을 직접 담당

 

📝PO (Product Owner)

프로젝트를 통해 만들어진 제품에 모든 의사결정권을 갖고 있어 그 제품으로 새로운 사업을 진행 시키는 등의 역할

 

📝PA (Project Assistant)

일반적으로는 프로젝트 산출물 관리, 문서 작성, 데이터 입력, 관리 보조 등의 행정 업무를 지원

 

📝PD (Project Director)

프로젝트 규모에 따라 기획/ 디자인/ 퍼블리싱의 수행 PM의 상위에서 제안에서 구축으로 이관될 때 초기 요구사항 및 구축 전략 UIUX설계가이드, 커뮤니케이션 가이드와 같은 포과적인 방향성을 수립해주는 포지션

 

📝AA (Application Architect)

소프트웨어 구조 설계 및 공통 로직 설정, 개발 표준 수립 등을 담당하며, 팀원들에게 가이드를 제공합니다. 프레임워크 설정, 개발 환경 구축 등을 지원합니다.

 

📝TA (Technical Architect)

하드웨어 및 네트워크를 포함한 전체 시스템의 인프라 설계를 담당하며, OS, WEB 서버, 애플리케이션 서버(WAS), 데이터베이스(DB) 설치 등을 포함한 시스템 아키텍처를 설계하고 구축하는 역할

 

📝QA (Quality Assurance)

산출물과 소스 코드의 품질을 보증하는 역할로 테스트 계획 수립 및 테스트 실행을 통해 품질 검증을 수행합니다

 

📝BA (Business Analyst)

기술적 관점이 아닌 비즈니스 관점의 프로세스 설계자

 

📝DA (Data Analyst)

오라클, MySQL과 같은 특정 DB만 추구하지 않습니다

ERD를 작성하며 엔터티간에 관계 설정 (PK,FK) 및 각종 데이터 관련 작업을 문서화합니다.

 

📝DBA (Database Administrator)

데이터베이스 관리자로서 특정 DB에 특화되었습니다.

SQL 튜닝, 인덱스 전략및 DA가 설계한 문서를 바탕으로 테이블을 변경하거나 합니다.

 

 

반응형
반응형

📝식별관계

부모테이블(주문테이블)의 기본키(주문코드)가 자식(주문 ─ 상품)테이블에서 외래키 뿐만 아니라 기본키의 역할까지 하는 경우입니다 → 주문 상품 테이블의 PK는 (주문코드, 상품코드)로 복합키가 되게 됩니다

반드시 주문코드가 있어야 주문 상품코드가 만들어질 수 있으니 데이터 정합성에 유리하지만 주문 상품 테이블에서 무조건 PK로 쓰이기 때문에 해당 테이블의 구조 변경시에는 매우 어렵습니다

ERD에서는 식별 관계는 실선을 사용합니다

 

  • 부모 테이블의 주식별자가 자식 테이블에서 중요한 역할을 하는 경우에 유용합니다
  • 일반적으로 1:1 관계에서 사용됩니다

 

📝비식별관계

부모테이블(주문테이블)의 기본키(주문코드)가 자식테이블(상품테이블)에서 외래키(주문코드) 역할만 하는 것입니다

뿐만 아니라 부모테이블(주문테이블)의 기본키가 아닌 필드와 자식테이블(상품테이블)에서도 기본키가 아닌 키와 연결한 것도 비식별 관계중에 한개이다

상품테이블은 주문테이블이 없어도 추가될 수 있고 주문테이블 또한 그렇습니다 → 서로 의존적이지 않게 됩니다

ERD에서 비식별 관계는 점선을 사용합니다

  • 부모 테이블이 없어도 자식 테이블이 독자적으로 존재할 수 있는 경우에 유용합니다
  • 일반적으로 1:N 관계에서 사용됩니다

 

📝스냅 샷

특정 시점에 생성되는 백업 입니다.

 

📝메타데이터

데이터를 설명해 주는 데이터

 디지털 카메라에서는 사진을 찍어 기록할 때마다 카메라 자체의 정보와 촬영 당시의 시간, 노출, 플래시 사용 여부, 해상도, 사진 크기 등의 사진 정보를 화상 데이터와 같이 저장하는데 해당 사진을 설명해주는 데이터들이다

 

📝마이그레이션

마이그레이션은 이동시키는 작업으로 데이터의 경우 A라는 곳에 저장해뒀으면 B라는 곳에 옮기는 작업이 이에 해당한다

 

📝UMS

통합 메시징 서비스라는 말로 SMS, MMS, FAX, 음성메시지 더 나아가 카카오톡 등 메세지로 알리는 시스템을 만든 제품을 말한다

 

 

🔗 참고 및 출처

https://ithub.tistory.com/369

반응형
반응형

📝마운트

우리가 사용하는 윈도우에서 CD-ROM 같은 하드웨어는 시스템이 부팅되면서 거의 대부분 자동으로 인식 됩니다 그리고 부팅 후에는 바로 사용할 수 있습니다

새로 설치한 하드웨어 장비의 경우는 PnP라는 기능에 의해 대부분 자동으로 인식 되어 사용자가 직접 마운트 작업을 하는 경우가 거의 없습니다

그러나 윈도우 시스템에서도 마운트 작업은 항상 이루어 지고 있습니다 그래서 우리가 직접 하지 않아도 사용이 가능한 것입니다.

 

리눅스에서도 PnP기능을 사용합니다만 HDD 추가 작업이나 DVD, CD-ROM 경우 수동으로 마운트 작업을 이용해야 하는 경우가 종종 있습니다 그리고 DVD, CD-ROM 등의 경우는 사용 후 반드시 마운트 해제를 해야 합니다

리눅스에서 사용할 특정장치를 시스템에 인식시키는 작업(마운트)에는 각 장치를 특정 디렉토리(마운트포인트)

를 연결하는 마운트 작업이 필요하고 연결된 후로부터 그 장치의 사용이 가능합니다.

예를 들자면 하드 디스크 장치면이 /dev/hda 라면 이 장치명을 지정된 마운트 포인트와 연결하는 작업이 마운트입니다.

 

즉, 마운트란 하드웨어 장치를 리눅스에 인식시키고 특정 장치(device)를 하나의 디렉토리처럼 사용하기 위해 수행하는 작업입니다.

 

📝PnP

사용자가 컴퓨터에 새로운 장치를 연결/제거 하였을 때 컴퓨터를 재부팅 하면서 PnP(플러그 앤 플레이) 바이오스가 자동으로 새로운 장치를 감지하여 필요한 환경 값을 설정해 주는 기능입니다 때문에 사용자가 장치를 변경하는데 보다 손쉽게 컴퓨터를 작동하게 해줍니다.

 

📝NAS (Network Attached Stroage) = [파일서버와 유사]

네트워크를 통해 여러 기기에서 데이터에 접근할 수 있도록 하는 저장장치를 가리킵니다 

NAS 시스템은 보통 특정 네트워크에 연결된 여러 컴퓨터나 기기에서 중앙 데이터 저장 및 공유를 가능하게 합니다.

파일, 동영상, 음악 등의 다양한 형식의 데이터를 저장하고, 필요에 따라 여러 사용자가 동시에 접근할 수 있도록 합니다

 하드디스크 따위만 있는 걸 네트워크에 연결 시켜서 접근할 수 있게 한 것

 

📝스케일업

서버의 스펙을 올려 처리 능력을 향상시키는 방안입니다

 

📝스케일아웃

서버의 대수를 늘려 처리 능력을 향상시키는 방안입니다 → 병렬 처리 [로드밸런싱]

 

📝네트워크드라이브

네트워크 상에 있는 저장 장치를 PC에 있는 드라이브처럼 사용하는 것을 의미

 

 

 

반응형
반응형

📝Archive File

Archive(기록물 보관소) File은 종종 파일 및 폴더의 압축된 형태를 가리키기도 합니다. 이것은 파일 크기를 줄이고 파일을 묶어서 보관하거나 전송하기 위한 목적으로 사용됩니다. 알려진 압축 형식에는 ZIP, RAR, TAR 등이 있습니다 → 압축 파일이라고 생각하면 된다

 

📝tar

리눅스에서 사용되는 압축방식으로 용량을 압축하지는 않습니다

덕분에 매우 빠르게 압축이 진행되고 CPU 사용률도 높지가 않습니다 그래서 tar를 사용하면 순식간에 압축 파일이 생성 됩니다

 

📝gzip (.gz)

리눅스에서 용량을 줄여서 압축할때 사용하는 방식

 

📝War (Web Application Archive)

Servlet / Jsp 컨테이너에 배치할 수 있는 웹 애플리케이션(Web Application) 압축파일 포맷으로 웹 관련 자원이 포함 되어있다 → JSP, Servlet, JAR, Class, XML, HTML, Javascript

별도의 웹서버(WEB) or 웹 컨테이너(WAS) 필요하다 즉, JAR파일의 일종으로 웹 애플리케이션 전체를 패키징 하기 위한 JAR 파일이다.

 

📝Jar (Java Archive)

JAVA 어플리케이션이 동작할 수 있도록 자바 프로젝트를 압축한 파일라이브러리라고 생각하면 된다

SpringBoot에서는 일반적으로 배포할 때 Jar를 사용하는데 JSP를 사용하거나 등의 이유가 아니면 War가 아닌 Jar로 개발하는게 좋습니다

 

🔗 참고 및 출처

https://ifuwanna.tistory.com/224

반응형
반응형

📝telnet

텔넷을 이용하면 접속 가능한 네트워크에 있는 컴퓨터를 자신의 컴퓨터처럼 파일 전송, 파일 생성, 디렉토리 생성 등을 자유롭게 할 수 있다 (원격으로 컴퓨터를 조종하는 거처럼 물론 거의 터미널형태) 단, 보안문제로 사용률이 감소하고 원격 제어를 위해 SSH로 대체되는 추세

 

📝ssh

telent에 보안을 적용시킨 것

 

📝sftp

ftp에 ssh 보안을 추가시킨 것이다

 

📝putty

서버는 물리적으로 떨어져 있어도 단말 장비를 통해서 원격으로 접속하여 작업할 필요가 있는데 이 때 윈도우같은 개인 pc 운영체제에서도 서버로 접속할 수 있도록 물리적인 단말장비가 아닌 논리적인 가상 단말기를  제공 (ssh, telent 등을 쉽게 쓰기 위한 툴)

 

📝CentOS 와 RedHat

레드햇(회사)은 리눅스를 유료버전과 무료버전을 동시에 서비스 했지만,현재는 레드햇에서 9.0버전 이후로

무료 리눅스를 배포하지 않고 있다. 레드햇은 GPL라이선스를 따야하는 이유로 소스를 공개해 왔다.

공개된 레드햇 리눅스의 소스코드를(심지어 유료버전) 그대로 복사해서 로고만 바꿔서 만들어낸 것이 CentOS이다.

사실 그래서 유료인 레드햇 리눅스와 무료인 CentOS는 완전히 동일한 기능과 성능을 제공한다.

 

그렇다면 유료인 레드햇을 사용할 이유가 없는것이라 생각할 수 있지만,

레드햇을 사용할 경우에는 레드햇사의 각종 기술지원을 받을 수 있는 장점이 있다.

 

아이러니하게도 레드햇을 그대로 카피한 CentOS를 레드햇사에서 2014 인수해 버린다.

보통 상용버전인 레드햇 엔트프라이즈의 새 버전이 릴리즈 되면 1~6개월정도 후에 CentOS가 발표된다. 

반응형
반응형

📝로드밸런싱

근래들어 L7을 많이 이용하고 이전에 많이 사용하던 장치는 L4였습니다. (L7, L4는 기계 장치입니다.)

서버 부하 분산을 위해 로드밸런서를 이용합니다.

물리적 프로세서 간에 작업을 스케줄링 해 놀고 있는 장비에 분산시켜 서버에 가해지는 부하(로드)를 분산(밸런싱)해주는 장치 또는 기술을 말합니다.

 

📝NAT(Network Address Translation)

내부 네트워크의 사설 IP 주소를 외부 네트워크에서 사용할 수 있는 공인 IP 주소로 변환해줍니다. 공유기나 라우터 같은데에서 사용되는 기술입니다.

 

📝NAT 테이블

내부 네트워크에서 요청 트래픽이 어디서 왔고 어디로 가야하는지를 기록합니다. 기본적으로 자동적으로 NAT 테이블은 생성됩니다. 예를 들면 내부 로컬 PC에서 어떤 사이트를 접속하면 그 사이트로 요청을 보낼테고 그 응답을 공인 IP를 거쳐서 로컬 PC로 보내야하는데 여러대일 경우 어디로 가야할지 모르기 때문에 그걸 도와주는 역할을 한다.

 

📝NAT (가상화)

호스트 PC인 내 로컬 PC가 게이트웨이 역할을 하며 내 PC를 통해서 데이터가 나가기 때문에 내 로컬 PC가 공유기처럼 되며 직접 사설 IP를 할당해줘서 실제 공유기가 내려주는 사설 IP랑 다른 대역대를 가진다. (로컬 PC 사설 IP 대역이 192.168.1.0/24일 경우 이거랑 다른 대역대를 가지게 된다.)

 

 

 

📝브리지 (가상화)

공유기가 주는 사설 IP를 그대로 할당 받는다. 그래서 로컬 네트워크에 포함된 형태이며 직접 통신합니다. (사설 IP 대역이 192.168.1.0/24일 경우 이 내에서 받게 된다.)

 

    

 

📝IP공유기

최대 255개의 장치까지 IP 주소를 할당해줄 수 있습니다. 또한 무선기능도 지원해줍니다.

공유기를 보면 색이 다른 곳이 있는데 모뎀에서 받은 메인 랜포트를 꼽는 곳입니다.

다른 포트들에 컴퓨터와 같은 장치들과 랜선을 연결하면 IP주소(사설IP)가 분배되어 인터넷 사용이 가능해집니다.

하지만 일반적인 가정에서 포트가 4개이기 때문에 더 많은 랜포트를 이용하기위해서 스위치허브가 필요합니다.

 

 

📝모뎀

통신사에서 주는 대역폭을 받아오는 장치입니다.

이걸 통해 공유기로 여러개의 컴퓨터에 인터넷이 들어오게 할 수 있습니다.

공인IP를 받는 역할 (모뎀 + 공유기 형태도 있다.)

 

 

🔗 참고 및 출처

https://kejdev.github.io/etc/2024/03/11/NAT%28NetworkAddressTranslation%29.html

 

반응형
반응형

📝안전성 요구사항

프로그래밍이 갑자기 다운되는 경우 처리를 어떻게 할 지에 대한 것

 

📝보안 요구사항

보안과 관련된 법을 고려해서 어떤 짓을 하면 안 되는지 어떤 부분은 반드시 필요한지에 대해 미리 정의해야한다.

 

📝소프트웨어 시스템 요구사항

가용성(간편한UI), 신뢰성(에러가 없는지), 이식성(다른 플랫폼에서도 작동), 유지 보수성(수정, 개선을 용이)를 고려해서 개발하기 위한 요구사항

 

📝데이터베이스 요구사항

데이터베이스를 사용하기전 ERD(구조를 설계)를 그리는 것

 

📝비즈니스 규칙 요구사항

기능에 필요한 요구사항과 제한사항에 대한 정의

 

📝운영 요구사항

시스템 운영하는데 필요한 요구사항

예를 들자면 데이터처리를 어떻게 할지, 데이터를 얼마만큼 모아서 한꺼번에 처리할지

 

📝사이트 적용 요구사항

시스템을 사이트에 적용하기 위해 필요한 요구사항을 정의 (어떻게 배치할지 등에 대한 것)

반응형