ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [IT 개발자와 일할 때 필요한 모든 개발 지식] - 전편
    강연 후기 2020. 6. 18. 21:39

    1. 프로그램 기본 지식 빠르게 격파하기

     

    운영체제(Operating System) : 프로그램들을 실행하는 메인 프로그램 _OS 종류마다 역할과 장단점이 다르다.

     

    운영체제의 역할 : 자원 관리, 프로그램 관리, 네트워크 통신, 입출력 장치 관리(모니터, 키보드, 마우스)

     

     

    하드웨어 장치들

     

    CPU : 대부분의 명령을 수행 (운영체제가 CPU에게 명령) 

    메모리 : CPU는 기억을 하지 못하기 때문에 데이터들을 '임시적(컴퓨터를 끄면 삭제됨)'으로 저장 

    디스크 : '영구적'으로 정보를 저장 >> 전반적으로 저장 (운영체제, 응용프로그램 등/ 컴퓨터 전원을 꺼도 사라지지 않는 정보들)

    프로세스[프로그램] : 운영체제가 프로세스를 전부 관리 (프로세스의 상태에 따라 CPU, 메모리 자원을 할당)

     

     

    프로그램은 어떻게 만들어질까?

    코딩 : 프로그래밍 언어를 이용해서 코드를 치는 것

    프로그래밍 언어 : 컴 휴터에게 명령을 내리기 위한 도구

    컴파일러 : 코딩을 0과1의 수로 변경해주는 역할 (빌드=/ 컴파일)

     

     

    프로그램 언어의 종류

    고급언어 : 사람이 이해하기 쉽도록 사람의 언어로 되어있는 프로그래밍 언어 (자바, 파이썬 등)

    저급언어 : 컴퓨터가 바로 이해할 수 있도록 만들어진 프로그래밍 언어

     

    Git & Github

    Git : 하나의 프로젝트를 여러 개발자들이 사용할 수 있도록 돕는 도구

    Github : Git을 이용해서 더 수월하게 코드를 저장할 수 있게 돕는 서비스 (bitbucket 도 비슷한 유형의 서비스)

     

    네트워크

    컴퓨터들끼리 서로 연결되어 통신하는 것

     

    클라이언트와 서버

    클라이언트 : 정보를 요구하는 쪽 (예시 - 웹/앱)

    서버 : 정보를 제공하는 쪽 (예시 - 이미지 정보/비디오 정보/웹 자체)

    API : 서버에서 요청을 받으면 미리 약속된 응답을 하는 것 (지정된 값을 미리 설정해 요청할 때 보내줌)

    (예시 - 카카오 로그인 API : 다음 카카오에서 개발자들이 카카오 로그인을 개발할 수 있도록 미리 규칙과 결과들을 정해놓음)

     

     

     

    IP란

    IP : 네트워크 통신을 위한 주소 [컴퓨터-컴퓨터] (모든 것은 IP주소로 접근한다. 웹사이트, 이미지, 비디오 다운 등 모든 것)

    포트 : 컴퓨터 내 프로세스로 도달하기 위한 주소 [컴퓨터 내 프로그램 연결]

    방화벽 : 보안을 위해 네트워크 통신을 제한

    Domain Name : 사람이 쉽게 인식할 수 있는 네트워크 영문 주소 (IP를 외우기 어려워서 생긴 대안점)

     

     

    라이브러리 & 프레임워크

    라이브러리 : 특정 기능을 수행하도록 미리 짜여진 개발 결과물 ( 컴포넌트와 유사 / 미리 짜여진 결과물 사용)

    프레임워크 : 고드의 큰 뼈대(frame)에서 짤 수 있도록 미리 짜여진 결과물 

     

    프론트엔드&백엔드

    프론트엔드: 유저가 서비스를 이용하기 위해 사용하는 프로그램 (예시: 웹,모바일 앱)

    Tip] 프론트엔드는 웹만 지칭하는 경우가 많다.

    백엔드: 유저가 접근할 수 없는, 서비스의 중요한 정보를 다루는 프로그램 (데이터 관점: 데이터를 쌓고 처리하기위한 모든 네트워크 공간)

     

     

     

     

    Q&A

    웹 말고 앱에서는 따로 URL을 입력해서 쓰지 않는데, 그럼 IP가 없나요?

    - 모바일 앱 다운되는 순간 입력된 IP를 사용합니다

     

    프론트엔드가 웹이라하면 앱은 뭐라 부르나요?

    -  모바일 앱이라고 부릅니다

     

    노션과 깃은 비슷한 개념인가요?

    - 네 여러명이 작업하고, 보기 편하게 도와주는 부분에서 유사합니다.

     

     

     

     

     


     

     

     

     

     

    2. 실제 IT 서비스(클래스101)에 사용된 기술들 뜯어보기

     

    01. [웹사이트 접속]

    URL을 입력하면 웹에 대한 정보를 받는다. (웹에 대한 정보를 웹서버가 인터넷 브라우저에 보내준 것.)

     

    02. ['개발자' 키워드 검색해 원하는 강의 '찜하기' 선택 -> '찜하기' 버튼이 '완료'로 변경]

    찜하기 했다라는 정보를 데이터 베이스에 저장하고 API 서버에 보내면, API 서버에서 다시 '완료'라는 정보를 보내준다.

     

    *클라우드 : 웹서버 + API서버 + 이미지 서버(그외 서버들 포함)를 관리 -> 각각 컴퓨터로 관리할 수 없으니까 클라우드로 한번에 보내기

     

    03. [원하는 강의에 대해 스크롤을 내리면서 정보 확인]

    사용자가 스크롤할 때 마다, 모든 정보들이 송출된다.

    (SAAS : 구글 애널리스트. Amplitude에서 데이터 관리)

    (더 큰 서비스는 빅데이터가 활용되기 때문에 다른 프로그램을 사용)

     

    * 데이터 사이언티스트의 역할 

    빅데이터 저장소 > 모델 > 유의미한 결과물을 만든다(분석) > 분석결과를 활용

     

    * 로그 송출

    1) 클릭, 찜하기, 등의 정보[클라이언트 로그] > 로그 서버 > 데이터 베이스에 저장

    2) WAS 서버 > 리퀘스트 요청 횟수, CPU, 메모리 사용량 등의 정보 [서버 로그] > 모니터링 서버

     

     

     

     


     

     

     

    3. 웹 & 모바일 개발의 큰 맥락 이해하기

    웹,앱의 기원 

    변화 : 단순한 웹 > 복잡한 웹 어플리케이션 > 모바일 어플리케이션

     

    웹을 개발하는 과정

    HTML : 뼈대를 잡고

    CSS : 디자인을 한 후

    JAVASCRIPT : 웹의 모든 동작을 처리한다.

    Tip] 파이썬으로 웹을 만들 수는 있지만 복잡한 동작이라면 결국 자바스크립트가 필요하다 (파이썬은 앱과 서버 위주)

     

    웹이 보여지는 과정 -1

    Tip] 웹 서버가 미리 HTML,CSS, 자바스크립트에서 먼저 가공해서 넘겨줄수도 있다. 

     

     

     

     

    웹이 보여지는 과정 -2

     

     

    웹이 보여지는 과정 -3

     

    정적인 페이지를 자바스크립트를 통해 액션 (애니메이션)을 보여준다.

     

     

     

     

    웹의 대표적 프레임워크 (큰 틀 = '너 여기서 바로 코딩해!')

     

     

    * 반응형 웹 : 화면 크기에 따른 다른 CSS를 적용하는 웹

     

    * 크로스 브라우저 : 우리가 개발한 웹이 모든 브라우저(크롬, 사파리 등)를 충족시키지 못하는 문제

    크로스 브라우저 테스트 : 브라우저를 여러 개 설치해서 테스트 / 크로스 브라우징 테스트 서비스 이용 (예시 : Lambda Tast 등) 

     

    Tip ] 개발자들이 직접 E2E 테스트 코드를 짜는 것도 좋은 방법입니다.

     


     

     

    앱을 개발할 때 쓰이는 언어들

    모든 모바일 앱은 이 두개의 OS에만 돌아간다고 봐도 무방하다.

    AOS : Cotlin, Java

    IOS : Swift, ObjectC

     

    앱의 구조

    앱에 미리 저장된 정보를 이용 (한번에 다운 받는다.) > 그래서 웹보다 빠르다

     

    앱 스토어 런칭/심사

    네이티브 : 순수하게  aosm ios 로 개발되는 것

    크로스 플랫폼 : 하나의 프레임워크로 개발하면 aos, ios 네이티브 코드로 변환 시켜주는 기술 (React Native, Flutter)

    하이브리드 앱, 웹 앱

     

     

    웹과 앱의 차이점 -1

    웹: 코드를 바꾼 후, 웹서버에 올리면 바로 반영된다

    앱: 코드를 바꾼 후, 앱을 앱스토에서 올려서 심사를 통과해야 반영된다

     

    웹과 앱의 차이점 -2

    웹: 컴퓨터(데스크탑, 스마트폰)의 장치를 거의 이용할 수 없다 - 푸시설정, 카메라, 센서 등

    앱: 컴퓨터의 장치 설정에 자유롭다

     

     

    알아두면 좋을 웹 & 앱 용어

    Mobile First 전략 : 보통은 웹+앱을 둘 다 제작하는데, 모바일을 가장 먼저 만드는 전략

    모바일 딥링크 : 다름 플랫폼에서 모바일 특정 페이지로 넘어가게 하는 링크

     

     

    댓글 0

Designed by Tistory.