본문 바로가기

Frontend Dev/Input

[IT 5분 잡학사전 2주 챌린지] 하이브리드 앱, 크로스 플랫폼 앱 다른거 나만 몰랐어..?

반응형

노마드 개발 북클럽 “IT 5분 잡학사전” 2주 챌린지
(23.11.10 ~ 23.11.24)

 

11/22 WED, Assignment # 13

 

🔖 오늘 읽은 범위 : 에피소드 39 ~ 에피소드 45

 

1. 책에서 기억하고 싶은 내용은?

✏️ 하이브리드・・・앱? 뭐라고요? (에피소드 43)

 ”우선 모바일 애플리케이션이라 하면 iOS 앱, 안드로이드 앱을 말해. 이건 알지? iOS는 아이폰이나 아이패드, 안드로이드는 갤럭시폰이나 탭처럼 모바일에서 동작하는 운영체제야. 그리고 이 녀석들 위에서 돌아가는 애플리케이션을 만드는 방법에는 보통 세 갈래의 선택지가 있어. 바로 하이브리드 방식, 크로스 플랫폼 방식, 네이티브 방식이지. 여기에 앱이라는 단어만 붙여서 그 방식으로 만들어진 애플리케이션을 하이브리드 앱, 크로스 플랫폼 앱, 네이티브 앱이라고 하는 거야."

하이브리드 앱

 하이브리드 앱은 사실 웹 사이트를 보여 주는 웹 뷰를 말해. 웹 뷰가 뭐냐면, 브라우저의 윈도우 부분을 말해. 이렇게 뷰로 만든 앱을 웹 앱이라고 하지.
 하이브리드 앱은 뭐냐! HTML, CSS, 자바스크립트로 개발한 웹 앱을 iOS에서도 안드로이드에서도 쓸 수 있도록 하이브리드(hybrid)로 만들어 앱을 판매하는 곳으로 보내는 거야. 구글 플레이스토어나 앱 스토어 같은 곳 말이지! 사용자는 이것을 내려받아서 쓰는 것이고 말야.

✓ 장점

- 네이티브 앱 개발 지식이 필요 없음!

 네이티브 앱의 개발 지식이 크게 필요하지 않다는 거야. 하이브리드 앱은 HTML, CSS, 자바스크립트만 알아도 충분히 개발할 수 있어. 이게 하이브리드 앱의 최고 장점이야.

✓ 단점

- UI를 한 땀 한 땀 짜야 해서 귀찮음!
 스마트폰의 성능을 온전히 활용하지 못해. 예를 들면 비디오 프로세싱과 같은 작업은 할 수 없어. 왜냐하면 자바스크립트로는 스마트폰을 그렇게까지 제어할 순 없거든. 기본 카메라 기능, 위치 확인, 네트워크 정보를 얻는 정도만 할 수 있어. 스마트폰의 고급 하드웨어 기능을 활용하기는 어렵다는 거야.

 

크로스 플랫폼 앱

 특정한 언어로 코딩하면 나중에 iOS, 안드로이드가 이해할 수 있는 코드로 변환해서 만들어.

 리액트 네이티브 기술을 사용하면 리액트에서 이해할 수 있는 방식으로 코딩하면 되는데, 이 코드는 결국 자바스크립트 코드로 변환돼. 그 변환된 코드를 iOS, 안드로이드가 자바스크립트 엔진으로 실행하고 말야.

플러터(Flutter)라는 기술도 있는데 이 기술은 다트(Dart)라는 언어로 코딩하면 돼. 그리고 이 코드는 결국 C 언어나 C++ 언어로 변환되지. C 언어, C++ 언어는 모두 iOS, 안드로이드에서 이해할 수 있어서 바로 실행할 수 있지. 이런 방식으로 만드는 앱을 크로스 플랫폼 앱이라고 해.

 크로스 플랫폼 앱 개발에서 가장 중요한 특징은 어떤 언어로 코드를 작성하면 그 코드가 나중에 네이티브 코드로 변환된다는 거야.

✓ 장점

- 개발자가 익숙한 코드로 한 번만 작성해도 OK!
 한 번에 앱을 2개 만들 수 있어서 시간을 크게 절약할 수 있어.

 크로스 플랫폼 앱의 또 다른 장점은 배경이 다양한 개발자가 한자리에 모인다는 거야. 그 덕분에 다양한 형태의 라이브러리, 튜토리얼이 생겨서 커뮤니티가 발전하는 거지. 그래서 크로스 플랫폼 앱은 많은 개발자들에게 매력적이지.

 코드를 한 번만 작성해도 iOS, 안드로이드라는 두 환경에서 실행할 수 있다는 장점이 있기 때문이지.


✓ 단점

- 네이티브 앱의 성능은 아직 따라갈 수 없음!

 네이티브 앱의 성능을 아직 따라갈 수 없다는 거? 이건 기술적인 한계인데, 하이브리드 앱 설명할 때 말했듯이 크로스 플랫폼 앱은 네이티브 언어로 변환하는 과정이 있어서 성능에는 조금 문제가 있을 수 밖에 없어. 다만 크로스 플랫폼 앱은 느리진 않아.

네이티브 앱

 네이티브 앱은 말 그대로 iOS만을 위한, 또는 안드로이드만을 위한 언어로 코드를 작성하여 개발했어. iOS는 스위프트라는 언어를 사용하고, 안드로이드는 자바나 코틀린이라는 언어를 사용해서 만들어.

✓ 장점

- 스마트폰의 성능을 최대로 사용할 수 있음!

✓ 단점

- 다른 앱에 비해 배우는 데 시간이 2배 걸림!

 같은 앱을 만들어도 어쨌든 2개의 앱을 만드는 시간이 필요한 거지. 그뿐만이 아니라 유지・보수도 따로 해야 해.

✏️ NFT가 도대체 뭐길래? (에피소드 44)

”NFT는 꼭 알아야 하는 개념이야. 특히 인터넷을 사용하는 사람이라면 NFT가 무엇인지 알아야 해. 왜냐하면 NFT는 우리 산업 전반을 바꿀지도 모르거든.”

NFT는 non fungible token의 줄임말로 대체 불가능한 토큰

 토큰에는 2가지 핵심 기능, 즉 돈을 받는 기능과 돈을 받고 토큰을 보내 주는 기능이 반드시 있어야 하거든? 그것을 합쳐서 스마트 계약(smart contract)이라고 하는데, 이 기능을 구현하면 되는 거야. 토큰을 잘 활용한 예가 바로 코인이야.

 
 근데 코인은 여러 개 있을 수 있어. 그러니 화폐처럼 쓰이는 거지. 그런데 여기서 내가 토큰을 딱 1개만 발행할 수 있도록 스마트 계약을 만들면 어떻게 될까? 그리고 그 안에 이미지를 넣는 거야. 이미지 외에 영상, 노래, 전세 계약서 등을 넣을 수도 있겠지!? NFT가 바로 이렇게 탄생하는 거야.

 실제로 돈을 주고 산 것은 그림이 아니라 단 한 번만 발행된 토큰이라는 것을 알 수 있어. 그림이 들어 있는 유일무이한 토큰 단 1개만 산 거지!

그래서 NFT 그림은 왜 이렇게 비쌀까?

 유일한 원본, 진짜라는 사실이 가치를 크게 높여 주는 거야. 그리고 유일한 원본임을 증명하는 기술이 바로 NFT야.아까 언급한 그림도 NFT 자체가 유일하다는 것을 증명하는 기술이므로 780억 원을 주고 그 유일함을 산 것이라고 할 수 있지.

 
 트위터 역사의 시작을 알린 첫 번째 트윗, 트위터 창업자 잭 도시(Jack Dorsey)의 트윗은 NFT에 담긴 채로 32억 원에 팔렸어.

왜냐하면 사람은 유일한 것을 보고 싶고 갖고 싶어 하니까!

 
 복사 & 붙여넣기하기 쉬운 요즘 세상에서 NFT의 콘셉트는 아직 시기상조이지만 NFT에 대한 인식은 점점 바뀔 거야. 왜냐하면 NFT는 인터넷 세상에서 재산권을 증명하는 기술이 될 테니까 말야.

유일함을 소유할 수 있게 해주는 NFT

 NFT를 통해 디지털 속에 유일함, 소유권이라는 개념이 생겼어. 누구든지 그림, 영상을 비롯해 모든 것을 판매할 수 있는 세상이 다가온 거야! 이 녀석 덕분에 많은 산업에 변화가 생길 거야. 새로운 직업도 생기겠지. 이를테면 NFT를 전시할 수 있는 멋진 디스플레이, 프레임이 필요하지 않을까? 그것을 만드는 사람도 필요하고 말야. 유명한 밴드의 콘서트 티켓을 NFT로 판매할 수도 있고! 이제는 NFT가 무엇인지 잘 알겠지? NFT는 우리 삶을 바꿀 수 있는 혁신적인 기술이야.

✏️ 멀웨어, 바이러스, 웜 개념 몽땅 정리 (에피소드 45)

역사상 가장 복잡하고 강력했던 사이버 무기 스턱스넷(Stuxnet)을 이야기할 거야.

→ 사이버 무기로 사용하는 것이 바로 멀웨어

멀웨어(malware)는 malicious(악의 있는)와 software(소프트웨어)의 합성어야. 뜻을 풀어 보면 악성 소프트웨어인데 컴퓨터를 감시하거나 파괴하는 녀석

바이러스와 웜이 달라?

멀웨어 중에서도 바이러스(virus)와 웜(worm)이 가장 많이 알려졌지.

✓ 숙주가 필요한 바이러스
바이러스와 웜은 복제되어 전파돼. 이건 같은 점이지. 그런데 바이러스는 숙주가 필요해.
어떤 파일을 내려받아서 열 때 감염되었다면 그 파일이 숙주야.

✓ 숙주가 필요 없는 웜
웜은 숙주가 필요하지 않아. 웜은 자기 자신을 복제하면서 전파돼. 그냥 USB를 통해서도 전파할 수 있는 징그러운 녀석이지.

웜은 컴퓨터를 어떻게 파괴시킬까?

 웜은 미사일(missile)과 페이로드(payload)가 필요해. 웜은 미사일을 통해 컴퓨터 안에 침투하고, 그 순간 페이로드를 배포하는 방식으로 컴퓨터를 파괴시켜.

 웜이 이동하는 가장 흔한 시나리오는 감염된 컴퓨터에 있다가 USB 같은 저장 장치와 연결되면 이것을 타고 다른 컴퓨터에 침투하는 거야.
 웜은 암호화된 상태로 여러분의 컴퓨터에 도착해서 스스로 암호를 해제하고 웜을 만들었던 본부에 연락해. 다음과 같은 방식으로 말이지.
 이 녀석이 더 위험한 이유는 컴퓨터의 루트에 설치된다는 사실 때문이야. 컴퓨터는 보안 구조가 오른쪽과 같이 양파처럼 여러 겹으로 되어 있지.

 가장 깊은 곳에는 중앙 보안 링이 있는데 바로 여기에 운영체제가 있어. 그리고 웜은 바로 이곳에 설치돼. 컴퓨터의 모든 자원을 관리하는 운영체제 바로 옆자리에 말이지. 이 말은 웜이 백신 프로그램보다 우위에 있다는 것을 의미해. 쉽게 말해 웜은 백신 프로그램 위에서 어떤 녀석을 감시하는지도 볼 수 있고, 어떤 녀석을 보라고 할 수도 있다는 이야기야.

아무도 발견하지 못한 프로그램의 취약점, 제로 데이

 제로 데이는 쉽게 말해서 아직 아무도 발견하지 못한 프로그램의 취약점을 뜻해. 어떤 프로그램을 개발할 때는 늘 취약점이 남기 마련이거든? 그런데 그 취약점은 발견되는 날까지는 고칠 수 있는 시간이 아예 없는 거나 마찬가지잖아? 그래서 제로 데이라고 한 거야. 아무튼 이런 이유로 제로 데이는 엄청 희귀하고 비싸.
 스턱스넷이라는 웜은 제로 데이를 무려 4개나 가지고 있었어.

 스턱스넷은 컴퓨터 드라이버를 설치하기도 했어. 운영체제와 컴퓨터 부품(모니터, 키보드, 마우스 등)을 연결하려면 컴퓨터 드라이버는 꼭 필요한 프로그램이거든? 그런데 이 녀석은 리얼텍(Realtek)이라는 대만 회사의 인증 자료로 컴퓨터 드라이버까지 설치한 거야.
 그리고 이 녀석은 PLC 중에서도 핵 원심 분리기를 찾고 있었어! 핵 원심 분리기는 농축 우라늄을 만드는 기계인데, 농축 우라늄은 핵무기의 핵심 자원이잖아! 엄청난 것을 노렸던 거지.

 

2. 오늘 읽은 소감은?

 드디어 2회독 완료했다 🙂 챌린지도 막바지에 도달했다. 가볍게 1회독을 한 후에 두번째 읽을 때는 정리를 하며 읽었기 때문에 생각보다 책을 읽는데 시간이 좀 걸렸던 것 같다. 하지만 기억에 남는 지식은 좀 더 많아졌던 의미있는 시간!

 오늘의 에피소드에서도 꼭 알아야 할 지식 하나를 터득했다. 나는 하이브리드 앱이랑 크로스 플랫폼 앱이 같은 건줄 알았는데, 다른 개념이었다. react-native나 flutter를 사용해 개발하는 것이 크로스 플랫폼 앱, 웹 뷰로 보여주는 것이 하이브리드 앱!

 

 

 책 내용과 함께 드림코딩 엘리님의 영상도 설명이 정말 잘되어 있다. 

 

마지막 즈음에 NFT 에피소드도 있었는데, 많은 생각이 들었던 에피소드였다.

“NFT는 꼭 알아야 하는 개념이야. 특히 인터넷을 사용하는 사람이라면 NFT가 무엇인지 알아야 해. 왜냐하면 NFT는 우리 산업 전반을 바꿀지도 모르거든.”

“NFT는 우리 삶을 바꿀 수 있는 혁신적인 기술이야.”

 

 라는 글을 읽으며 정말 그런가? 라는 생각이 들었다. NFT에 무지하고 관심이 없어서, 지금도 유행일지 모르겠지만 한때 NFT는 엄청난 유행과 함께 혁신을 불러일으켰던 것으로 기억한다. 복제가 너무나도 쉬운 인터넷 세상에서 대체 불가능한 이라니! 하지만 대체 불가능하다고 해도 여전히 복제는 가능했고, “유일한 진짜”가 아닐뿐 소유도 가능했다. 그래서 나는 대체 불가능하다는게 그렇게 의미가 있을까? 라는 생각을 했었던 것 같다. NFT가 우리 산업을 바꿀 수 있는 혁신적인 기술이라는 글이 공감이 잘 안되었다. 지금 당장 공감은 안되지만 정말 이해하고 싶었다. 그런 세계가 있고, 그런 산업이 이미 존재한다는 것. 그게 바로 미래를 보고 투자할 수 있는 능력이 아닐까. 난 역시 이런 투자는 안맞는걸까, 혁신적인 방법을 떠올리고 싶다 등등 별 생각이 다 들었다. 아는 만큼 보인다고, 그 세계를 이해하려면 역시 또 공부를 해야겠지. NFT는 정말 혁신적인 기술일까?

 아, 또 하나. 예술을 하는 지인의 집에 NFT 관련 서적이 있는 것을 본 적이 있다. 그 책을 읽었느냐고, 관심이 있느냐고 묻지는 않았지만, 그 때 예술가에게 NFT란 무엇일까, 라는 생각도 했던 것 같다.

 

 마지막 에피소드로 스턱스넷이라는 웜 이야기가 등장했다. 바이러스에 관해서 사실 별로 관심이 없었는데, 굉장히 흥미롭게 읽었다. 핵 프로그램을 공격하는 바이러스라니?! 아니 그전에 핵 프로그램이라는 것 자체도 생소했는데, 이 세상엔 정말 내가 모르는 세계가 너무나도 크게 존재하는구나 싶었다. 나는 그저 우물안 🐸개구리🐸 여튼 마지막 에피소드 정리라 그런지 글 작성이 엄청나게 정성스러워졌는데, 스턱스넷 관련해서 위키와 자료도 조금 찾아보았다.

 

스턱스넷의 이해 : 코드가 기계를 망가뜨리고 전쟁을 일으키는 방법

스턱스넷(Stuxnet)은 대단히 정교한 컴퓨터 웜으로, 기존에 알려진 여러 가지 윈도우 제로데이 취약점을 이용해 컴퓨터를 감염시키고 확산된다.

www.itworld.co.kr

🔗 위키백과

🔗 나무위키

 

 

 그 외에도 이번에는 7개의 에피소드를 읽었기 때문에 인공지능, 도커, REST API 등등 다양한 개념들에 대해 학습할 수 있었다! 항상 부족한 시간이지만, 시간이 된다면 좀 더 살을 덧붙여 공부하고 공유하고 싶다.

반응형